fio是一个广泛使用的磁盘性能测试工具,功能强大,可以用于测试磁盘性能,也可以通过I/O
重放来模拟用户的实际请求,其主要有如下几个特点:
- 支持多种文件系统,包括NTFS,ext4,btrfs,xfs等
- 支持多种IO模式,包括randwrite,read,write,dd,trim,flush,discard等
fio是一个广泛使用的磁盘性能测试工具,功能强大,可以用于测试磁盘性能,也可以通过I/O
重放来模拟用户的实际请求,其主要有如下几个特点:
Nothing is easier than self-deceit. For what each man wishes, that he also believes to be true(人们善于自欺,人们想得到什么,就会相信什么)
德摩斯梯尼(Demosthenes,古希腊)
If we spoke a different language, we would perceive a somewhat differenet world.
Ludwig Wittgenstein
在Android系统开发过程中,经常碰到CPU占用率高、内存泄露、内存占用高等性能相关的问题,这时通常需要抓取系统的trace
日志,用以查看进程的CPU占用,内存分配等情况。怎么抓取系统trace, 这时一般需要用到系统性能相关的分析工具。这篇文章就以Android S
为例,说明Android开发中常用的一些性能优化工具的使用方法,主要包括如下几个工具:
在讲虚拟化的第二篇QNX系统时,提到在QNX
中设备的虚拟化有直通(pass-through
)、半虚拟化(para-virtulization
)、全虚拟化(full-virtualization
)等几种形式,而像串口、网络设备、块设备等通常都是基于半虚拟化的形式实现的。在半虚拟化的实现方案中,virtio
是最常见的一种。简单来说,virtio
是虚拟化设备的中间抽象层,为设备的虚拟化提供了一个统一的框架与接口,增加了跨平台时代码的复用性。
QNX
最初是Gordon Bell
与Dan Dodge
两人在1980年代初期创建的一个实时微内核操作系统(RTOS(Real-Time Operating System
), 后来被黑莓(BlackBerry
)公司收购,因此也叫做Blackberry QNX
系统。QNX
被世人熟知还是因为其高安全性、QNX hypervisor
等特性在汽车领域的广泛应用。
这两年汽车领域在智能与域融合的推动下,开始兴起了各种虚拟化(Virtualization
)的座舱解决方案,尤其以黑莓公司的QNX
虚拟化方案应用最为广泛。说起来,虚拟化并不是什么新的概念,操作系统诞生之初就有了类似的原型: 对于一个分时的操作系统,通过在不同进程之间切换状态,给每个用户都制造一种完全使用整个机器的感觉,实则是操作系统通过进程之间的资源分时复用实现的结果。简单来说,虚拟化就是一种资源隔离与抽象的方案,通过对CPU
、Memory
、I/O
设备增加中间层的访问控制,以达到与访问物理资源同等的效果。
投屏是指将某个终端的音视频或者其他内容通过有线或者无线的形式投射到其他终端上的一种协议。目前常见的投屏协议有DLNA
/Airplay
/Mirracast
/Chromecast
:
DNS(Domain Name System)
即域名解析系统,是网络访问时用于将域名解析成对应IP地址的一种分布式网络服务。比如,要访问www.google.com
这个域名,Android
系统会首先发送一个UDP
请求到标准的53
端口系统的域名解析服务器,拿到对应的IP地址后才会与服务端建立连接。除了标准的DNS
服务外,目前还有HttpDNS
(DNS over Https, DoH
)以及基于TSL
的DNS
服务(DNS over TLS, DoT
)。
那么,Android
中DNS
解析的大致框架是怎么的?整个DNS
解析的流程又是怎么样的? 在看具体实现细节之前,我们不妨思考一下几个问题,想一想,如果我们自己从零开始为Android
设计一个DNS
系统,应该怎么做?
Those who cannot remember the past are condemned to repeat it
George Santayana