Linux在平均启动时读取多少数据?


9

我想知道刚安装的原始Linux系统(例如32位CentOS 5.10)总共要读取多少数据才能到达虚拟控制台shell提示符?您知道,读取所有配置文件,加载二进制文件,内核映像等。

我正在寻找数量级估计。我知道Linux引导过程的详细信息差别很大。我们在说10Mb吗?100Mb?1Gb?


5
你问来干什么?
Zoredache 2014年

2
系统之间的可变性是(可以是)数量级-加载内核和驱动程序是引导过程中最微小的部分,并且在出现登录提示之前,系统上的init脚本可以执行任何操作。请以实际的实际问题说明您要处理的情况,我们可以为您解决。
voretaq7 2014年

1
@amn您可以在最初的问题中说明原因吗?这将有助于上下文。人们会问类似问题的另一个原因是他们是否使用了周期受限的存储。细节越多越好。
ewwhite 2014年

8
@ewwhite我正在引导100台Linux机器,其95%的系统内容是相同的,并且将保持不变-这些机器是克隆机器。我想将文件系统的相同/只读共享部分卸载到NFS存储中,从那里挂载它,然后像这样启动。文件系统的仅可写部分(例如/ var,/ tmp和/ home)将保留在每台计算机本地。由于可能有数百台计算机作为“集群”的一部分同时启动,因此我需要估计从中启动时访问的NFS存储链接是否会成为瓶颈。
2014年

5
I need to estimate...然后做一个测量。
symcbean 2014年

Answers:


8

安装一个系统,启动它,并检查了从块层统计数据/sys/block/${DEV}/stat/sys/block/sda/stat

引用文档

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的结果

我在运行Scientific Linux 6.1 i386(类似于RHEL)的KVM / qemu虚拟机上进行了测试。已启用以下服务:acpid,auditd,crond,网络,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
请注意,这似乎只为您提供传输需求(数量),而不是吞吐量需求(速率)。您可以将正常运行时间除以平均数。
voretaq7 2014年

15

您在评论中表示正在评估netboot /网络根环境。

您必须意识到的第一件事是没有“香草”之类的东西 -您将不会以零更改立即开箱即用地运行CentOS 5.10(如果您认为自己是在自欺欺人:NFS根已经至少草莓,在开心果上也是如此。

如果您想要针对特定环境的答案(这才是真正的关键),则需要设置NFS服务器和客户端计算机,将其启动并进行测量:

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

这两个值对于性能至关重要。您可能还需要在某个时候设置多个客户端,并模拟系统的正常使用情况,以查看人们在日常使用系统时,他们对NFS服务器/网络提出什么样的稳态需求。工作。

另请参阅:关于容量规划的系列 -我们没有专门讨论NFS,但适用“构建,测试,强调”的一般原则。


1
如果有香草冰淇淋,那就有香草Linux!;-)严重的是,它是一个相当不变的CentOS 5.10,所做的任何更改都是可写文件系统的一部分,该文件系统不会从NFS挂载,因此这不是一个因素-是的,其中有一个庞大的Postgres数据库/ var / lib,但是/ var不是从NFS挂载的,而是在本地物理启动磁盘上。如果我想对其进行概要分析,则不会在这里提出问题:-)
amn 2014年

10
@amn对不起,您不想进行概要分析,但是您必须做必须做的事情-我们无法为您提供适用的电话号码。您的解决方案(NFS根目录)是一个经过时间考验的可靠解决方案,说实话,您可以毫无问题地盲目部署它(成千上万个Sun Microsystems环境是像在NFS-root和Netbooting鼎盛时期那样盲目部署的) Solaris,效果很好)。如果您担心性能,则需要进行性能分析以确定特定环境的需求和瓶颈-这只是Universe的方式。
voretaq7 2014年

草莓+1
alexyorke 2014年

1
@ voretaq7不能与分析参数争论,也永远不会。在袖手旁观并设置NFS之前,我只想要下一个最好的东西。感谢您的宝贵意见。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.