amn*_*amn 9 linux boot benchmark
我想知道新安装的 vanilla Linux 系统(如 32 位 CentOS 5.10)总共读取了多少数据才能进入虚拟控制台 shell 提示?您知道,读取所有配置文件、加载二进制文件、内核映像等。
我正在启动 100 台 Linux 机器,它们的系统内容的 95% 是相同的并且将保持相同——这些机器是克隆的。我想将文件系统的相同/只读共享部分卸载到 NFS 存储,从那里安装它,然后像这样启动。只有文件系统的可写部分,如 /var、/tmp 和 /home,将保留在每台机器的本地。由于可能有数百台机器作为“集群”的一部分同时启动,我需要估计访问的 NFS 存储链接在启动时是否会成为瓶颈。
我正在寻找数量级的估计。我知道 Linux 启动过程的细节差异很大。我们说的是 10Mb 吗?100Mb?1Gb?
vor*_*aq7 15
你必须意识到的第一件事是没有“vanilla”这样的东西——你不会在零更改的情况下开箱即用地运行 CentOS 5.10(如果你认为你是在自欺欺人:NFS Root 已经是至少草莓,接近开心果)。
如果您想要针对您的特定环境(这才是真正重要的)的答案,您将需要设置 NFS 服务器和客户端机器,启动它并测量:
这两个值对于性能都至关重要。您可能还想在某个时候设置多个客户端并模拟系统的正常使用,以了解当人们像在日常生活中一样使用系统时,它们对您的 NFS 服务器/网络提出什么样的稳态需求工作。
另请参阅:我们的容量规划系列- 我们不会专门讨论 NFS,但适用“构建、测试、强调”的一般原则。
安装一个系统,启动它并从/sys/block/${DEV}/stat例如/sys/block/sda/stat.
从文档中引用:
stat 文件由一行文本组成,其中包含 11 个以空格分隔的十进制值。下表总结了这些字段,并在下面进行了更详细的描述:
Run Code Online (Sandbox Code Playgroud)Name units description ---- ----- ----------- read I/Os requests number of read I/Os processed read merges requests number of read I/Os merged with in-queue I/O read sectors sectors number of sectors read read ticks milliseconds total wait time for read requests write I/Os requests number of write I/Os processed write merges requests number of write I/Os merged with in-queue I/O write sectors sectors number of sectors written write ticks milliseconds total wait time for write requests in_flight requests number of I/Os currently in flight io_ticks milliseconds total time this block device has been active time_in_queue milliseconds total wait time for all requests读扇区,写扇区
这些值计算从此块设备读取或写入的扇区数。有问题的“扇区”是标准的 UNIX 512 字节扇区,而不是任何特定于设备或文件系统的块大小。当 I/O 完成时,计数器会增加。
您可以使用此单行更轻松地获取字节数:
awk '{printf("read %d bytes, wrote %d bytes\n", $3*512, $7*512)}' /sys/block/vda/stat
Run Code Online (Sandbox Code Playgroud)
我在运行Scientific Linux 6.1 i386(类似于 RHEL)的 KVM/qemu 虚拟机上对此进行了测试。启用了以下服务:acpid、auditd、crond、network、postfix、rsyslog、sshd 和 udev-post。交换位于单独的磁盘上,因此未将其考虑在内。
在登录提示出现几秒钟后,使用 SSH 远程获取的 85 次启动的统计数据是:
Name Median Average Stdev
------------- ------ ------- -----
read I/Os 1920 1920.2 2.6
read merges 1158 1158.4 1.8
read sectors 85322 85330.9 31.9
>> read MiBytes 41.661 41.665 0.016
read ticks 1165 1177.2 94.1
write I/Os 33 32.6 1.7
write merges 64 59.6 7.4
write sectors 762 715.2 70.9
>> write MiBytes 0.372 0.349 0.035
write ticks 51 59.0 17.4
in_flight 0 0.0 0.0
io_ticks 895 909.9 57.8
time_in_queue 1217 1235.2 98.5
Run Code Online (Sandbox Code Playgroud)
启动时间约为 20 秒。