Linux 每次启动平均读取多少数据?

Linux 每次启动平均读取多少数据?

我想知道,新安装的 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 服务器和一台客户端机器,启动它,然后测量:

  1. 转让(数量)
  2. 吞吐量(速率)

这两个值对于性能都至关重要。您可能还需要设置一些客户端并模拟系统的正常使用,以查看当人们像在日常工作中一样使用系统时,它们对您的 NFS 服务器/网络提出什么样的稳定状态需求。

也可以看看:我们的容量规划系列- 我们不专门讨论 NFS,但“构建它,测试它,强调它”的一般原则适用。

相关内容