我想知道,新安装的 vanilla Linux 系统(如 32 位 CentOS 5.10)总共需要读取多少数据才能进入虚拟控制台 shell 提示符?您知道,读取所有配置文件、加载二进制文件、内核映像等。
我正在启动 100 台 Linux 机器,其中 95% 的系统内容是相同的,并且将保持相同 - 这些机器是克隆的。我想将文件系统的相同/只读共享部分卸载到 NFS 存储,从那里挂载它,然后像那样启动。只有文件系统的可写部分(如 /var、/tmp 和 /home)将保留在每台机器的本地。由于可能有一百台机器作为“集群”的一部分同时启动,我需要估计访问的 NFS 存储链接是否会成为启动时的瓶颈。
我正在寻找数量级估计。我知道 Linux 启动在过程细节方面差异很大。我们说的是 10Mb?100Mb?1Gb?
答案1
/sys/block/${DEV}/stat
安装一个系统,启动它并从例如检查块层统计信息/sys/block/sda/stat
。
引自文档:
统计文件由一行文本组成,其中包含 11 个十进制值,每个值之间用空格分隔。下表总结了各个字段,下面将更详细地介绍这些字段:
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
Scientific Linux 6.1 i386 的结果
我在运行的 KVM/qemu 虚拟机上测试了这个科学Linux6.1 i386(与 RHEL 类似)。启用了以下服务: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
启动时间约为20秒。
答案2
你必须意识到的第一件事是不存在“香草”这种东西- 您不会在没有任何变化的情况下直接运行 CentOS 5.10(如果您认为您会这样做,那您就是自欺欺人:NFS Root 至少已经是 Strawberry 版本了,接近 Pistachio 版本)。
如果你想要一个答案你的特定环境(这才是真正重要的)您将需要设置一个 NFS 服务器和一台客户端机器,启动它,然后测量:
- 转让(数量)
- 吞吐量(速率)
这两个值对于性能都至关重要。您可能还需要设置一些客户端并模拟系统的正常使用,以查看当人们像在日常工作中一样使用系统时,它们对您的 NFS 服务器/网络提出什么样的稳定状态需求。
也可以看看:我们的容量规划系列- 我们不专门讨论 NFS,但“构建它,测试它,强调它”的一般原则适用。