Linux

Linux 平均啟動時讀取了多少數據?

  • August 30, 2021

我想知道新安裝的 vanilla Linux 系統(如 32 位 CentOS 5.10)總共讀取了多少數據才能進入虛擬控制台 shell 提示符?你知道,讀取所有配置文件、載入二進製文件、核心映像等。

我正在啟動 100 台 Linux 機器,它們 95% 的系統內容是相同的,並且將保持相同——這些機器是複製的。我想將文件系統的相同/只讀共享部分解除安裝到 NFS 儲存,從那裡掛載它,然後像這樣啟動。只有文件系統的可寫部分,如 /var、/tmp 和 /home,將保持在每台機器的本地。由於可能有數百台機器作為“集群”的一部分同時啟動,我需要估計訪問的 NFS 儲存連結是否會成為啟動時的瓶頸。

我正在尋找數量級的估計。我知道 Linux 引導在過程細節方面差異很大。我們說的是 10Mb 嗎?100MB?1Gb?

安裝一個系統,啟動它並檢查來自/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、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 秒。

引用自:https://serverfault.com/questions/580047