當前位置:首頁 » 操作系統 » linux讀寫性能

linux讀寫性能

發布時間: 2022-08-31 02:50:25

❶ 為什麼linux文件系統的讀性能都高於寫性能,有的相差還很大

因為從硬碟工作原理上寫比讀就要慢(寫原理不同,還有額外的校驗等)
其次從操作系統上看寫需要更多的支持(文件鎖等,fat表改寫等)
最後表現出來就是寫比讀要慢很多。

❷ 如何1分鍾內對 Linux 性能快速分析(113資訊網)

當你在IDC主機商購買一台系統為 Linux 伺服器之後,我想大家第一時間就是對主機進行一個性能分析,這里我跟大家分享幾個命令,能讓大家在一分鍾以內對自己的性能有一個大致的鳥解?

uptime

dmesg | tail

vmstat 1

mpstat -P ALL 1

pidstat 1

iostat -xz 1

free -m

sar -n DEV 1

sar -n TCP,ETCP 1

top

這10個命令到底是什麼意思,我為大家一一解釋一下:

1.uptime

# uptime

03:16:26 up 21:31, 1 user, load average: 10.02, 06.43, 09.02

在上面的例子中,平均負載顯示是在不斷增加的,1 分鍾的值是 10,相比 15 分鍾的值 09 來說是增加了。這個數字這么大就意味著有事情發生了.

2. dmesg | tail

# dmesg | tail

[  14.102501] ISO 9660 Extensions: RRIP_1991A

[  15.900216] ISO 9660 Extensions: Microsoft Joliet Level 3

[  15.900234] ISO 9660 Extensions: RRIP_1991A

[  17.030540] EXT4-fs (vda1): resizing filesystem from 5242619 to 13106939 blocks

[  17.151434] random: crng init done

[  17.151436] random: 7 urandom warning(s) missed e to ratelimiting

[  18.314268] EXT4-fs (vda1): resized filesystem to 13106939

[  20.394666] new mount options do not match the existing superblock, will be ignored

[  38.405804] ISO 9660 Extensions: Microsoft Joliet Level 3

[  38.407599] ISO 9660 Extensions: RRIP_1991A

這里展示的是最近 10 條系統消息日誌,如果系統消息沒有就不會展示。主要是看由於性能問題導致的錯誤。

3. vmstat 1

# vmstat 1

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r  b  swpd  free  buff  cache  si  so    bi    bo  in  cs us sy id wa st

1  0      0 324644 141184 1270628    0    0    10    40  207  431  1  1 99  0  0

0  0      0 324388 141184 1270628    0    0    0    0  130  280  1  1 98  0  0

0  0      0 324388 141184 1270628    0    0    0    0  89  169  0  0 100  0  0

0  0      0 324420 141184 1270628    0    0    0    0  118  225  1  0 99  0  0

0  0      0 324420 141184 1270628    0    0    0    32  125  254  0  0 99  1  0

1  1      0 324420 141184 1270628    0    0    0    68  96  171  0  0 96  4  0

0  0      0 324452 141184 1270628    0    0    0  184  127  166  0  1 96  3  0

^C

r: CPU 上的等待運行的可運行進程數。這個指標提供了判斷 CPU 飽和度的數據,因為它不包含 I/O 等待的進程。可解釋為:「r」 的值比 CPU 數大的時候就是飽和的。

free:空閑內存,單位是 k。如果這個數比較大,就說明你還有充足的空閑內存。「free -m」 和下面第 7 個命令,可以更詳細的分析空閑內存的狀態。

si,so:交換進來和交換出去的數據量,如果這兩個值為非 0 值,那麼就說明沒有內存了。

us,sy,id,wa,st:這些是 CPU 時間的分解,是所有 CPU 的平均值。它們是用戶時間,系統時間(內核),空閑,等待 I/O 時間,和被偷的時間(這里主要指其它的客戶,或者使用 Xen,這些客戶有自己獨立的操作域)。

4. mpstat -P ALL 1

# mpstat -P ALL 1

Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)

03:33:26 AM  CPU    %usr  %nice    %sys %iowait    %irq  %soft  %steal  %guest  %gnice  %idle

03:33:27 AM  all    0.00    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00  99.00

03:33:27 AM    0    0.00    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00  99.00

這個命令列印各個 CPU 的時間統計,可以看出整體 CPU 的使用是不是均衡的。由於我使用的是1H2G主機看不出區別!

5. pidstat 1

# pidstat 1

Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)

03:34:47 AM  UID      PID    %usr %system  %guest  %wait    %CPU  CPU  Command

03:34:48 AM    0      1120    1.00    0.00    0.00    0.00    1.00    0  sshd

pidstat 命令為每個 CPU 統計信息功能。由於我使用的是1H2G主機看不出區別!

6. iostat -xz 1

# iostat -xz 1

Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)

avg-cpu:  %user  %nice %system %iowait  %steal  %idle

          0.67    0.01    0.52    0.29    0.00  98.52

Device            r/s    w/s    rkB/s    wkB/s  rrqm/s  wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util

loop0            0.00    0.00      0.00      0.00    0.00    0.00  0.00  0.00    0.22    0.00  0.00    9.64    0.00  0.00  0.00

scd0            0.02    0.00      0.48      0.00    0.00    0.00  0.00  0.00    0.21    0.00  0.00    27.72    0.00  0.19  0.00

vda              0.64    4.07      9.15    40.59    0.00    1.99  0.00  32.85    3.58    2.31  0.01    14.31    9.96  0.24  0.11

avg-cpu:  %user  %nice %system %iowait  %steal  %idle

          0.00    0.00    0.00    0.00    0.00  100.00

Device            r/s    w/s    rkB/s    wkB/s  rrqm/s  wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util

r/s, w/s, rkB/s, wkB/s:這些表示設備上每秒鍾的讀寫次數和讀寫的位元組數(單位是k位元組)。這些可以看出設備的負載情況。性能問題可能就是簡單的因為大量的文件載入請求。

await:I/O 等待的平均時間(單位是毫秒)。這是應用程序所等待的時間,包含了等待隊列中的時間和被調度服務的時間。過大的平均等待時間就預示著設備超負荷了或者說設備有問題了。

avgqu-sz:設備上請求的平均數。數值大於 1 可能表示設備飽和了(雖然設備通常都是可以支持並行請求的,特別是在背後掛了多個磁碟的虛擬設備)。

%util:設備利用率。是使用率的百分數,展示每秒鍾設備工作的時間。這個數值大於 60% 則會導致性能很低(可以在 await 中看),當然這也取決於設備特點。這個數值接近 100% 則表示設備飽和了。

7. free -m/h

ubuntu@VM-0-17-ubuntu:~# free -m

              total        used        free      shared  buff/cache  available

Mem:          1833        137        313          5        1381        1506

Swap:            0          0          0

ubuntu@VM-0-17-ubuntu:~$ free -h

              total        used        free      shared  buff/cache  available

Mem:          1.8G        139M        311M        5.8M        1.3G        1.5G

Swap:            0B          0B          0B

這個命令我相信大家都熟悉,buffers:用於塊設備 I/O 緩沖的緩存,cached:用於文件系統的頁緩存。

8. sar -n DEV 1

ubuntu@VM-0-17-ubuntu:~# sar -n DEV 1

Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)

03:43:35 AM    IFACE  rxpck/s  txpck/s    rxkB/s    txkB/s  rxcmp/s  txcmp/s  rxmcst/s  %ifutil

03:43:36 AM      eth0    11.00    10.00      0.79      1.06      0.00      0.00      0.00      0.00

03:43:36 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

使用這個工具是可以檢測網路介面的吞吐:rxkB/s 和 txkB/s,作為收發數據負載的度量,也是檢測是否達到收發極限。在上面這個例子中,eth0 接收數據達到 0.79 kb 位元組/秒,發送數據達到1.06 位元組/秒。

9. sar -n TCP,ETCP 1

ubuntu@VM-0-17-ubuntu:~# sar -n TCP,ETCP 1

Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)

03:49:56 AM  active/s passive/s    iseg/s    oseg/s

03:49:57 AM      0.00      0.00      5.05      3.03

03:49:56 AM  atmptf/s  estres/s retrans/s isegerr/s  orsts/s

03:49:57 AM      0.00      0.00      0.00      0.00      0.00

這是對 TCP 關鍵指標的統計,它包含了以下內容:

active/s:每秒本地發起的 TCP 連接數(例如通過 connect() 發起的連接)。

passive/s:每秒遠程發起的連接數(例如通過 accept() 接受的連接)。

retrans/s:每秒TCP重傳數。

10. top

ubuntu@VM-0-17-ubuntu:~# top

top - 03:53:20 up 1 day,  1:41,  1 user,  load average: 0.01, 0.04, 0.00

Tasks:  89 total,  1 running,  52 sleeping,  0 stopped,  0 zombie

%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem :  1877076 total,  317436 free,  143420 used,  1416220 buff/cache

KiB Swap:        0 total,        0 free,        0 used.  1540856 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM    TIME+ COMMAND                                                                                     

3730 root      20  0  105688  6812  5840 S  0.3  0.4  0:00.01 sshd                                                                                         

7546 root      20  0  644608  14924  6776 S  0.3  0.8  2:48.99 YDService                                                                                   

    1 root      20  0  159892  9260  6796 S  0.0  0.5  0:06.45 systemd                                                                                     

    2 root      20  0      0      0      0 S  0.0  0.0  0:00.00 kthreadd                                                                                     

    4 root      0 -20      0      0      0 I  0.0  0.0  0:00.00 kworker/0:0H                                                                                 

    6 root      0 -20      0      0      0 I  0.0  0.0  0:00.00 mm_percpu_wq                                                                                 

    7 root      20  0      0      0      0 S  0.0  0.0  0:04.29 ksoftirqd/0                                                                                 

    8 root      20  0      0      0      0 I  0.0  0.0  0:08.85 rcu_sched                                                                                   

    9 root      20  0      0      0      0 I  0.0  0.0  0:00.00 rcu_bh                                                                                       

  10 root      rt  0      0      0      0 S  0.0  0.0  0:00.00 migration/0                                                                                 

  11 root      rt  0      0      0      0 S  0.0  0.0  0:00.16 watchdog/0                                                                                   

  12 root      20  0      0      0      0 S  0.0  0.0  0:00.00 cpuhp/0                                                                                     

  13 root      20  0      0      0      0 S  0.0  0.0  0:00.00 kdevtmpfs                                                                                   

top 命令包含了很多我們前面提到的指標。這個命令可以很容易看出指標的變化表示負載的變化,這個看起來和前面的命令有很大不同。

top 的一個缺陷也比較明顯,很難看出變化趨勢,其它像 vmstat 和 pidstat 這樣的工具就會很清晰,它們是以滾動的方式輸出統計信息。所以如果你在看到有問題的信息時沒有及時的暫停下來(Ctrl-S 是暫停, Ctrl-Q 是繼續),那麼這些有用的信息就會被清屏。

文章原文: https://www.113p.cn/129.html  (來都來了,就去我博客看下!!)

❸ Linux CPU性能調優

CPU是影響linux性能的主要因素之一。vmstat命令:顯示關於系統各種資源之間相關性能的簡要信息。
procs那欄中的r表示運行和等待CPU時間片的進程數,如果這個值長期大於系統CPU的個數那就說明CPU不足,需要增加CPU。memory那欄中:swapd表示切換到內存交換區的內存數量。free表示當前空閑的物理內存數量。buff表示塊設備(/dev/sda)讀寫需要的緩沖。cache表示文件系統的緩存。如果值較大,說明緩存中的文件數較多。swap中si表示由磁碟調入內存。so表示由內存調入磁碟。在一般情況下,si和so的值都為0,如果這2個值長期不為0
的話,說明系統內存不足,需要添加內存。
www.shiwu.com
io:顯示磁碟讀寫狀況bi表示讀磁碟數據的總量。bo表示寫磁碟數據的總量。system:顯示間隔內發生的中斷數in表示在磨一時間間隔中每秒設備中斷數。cs表示每秒產生的上下文切換次數。這2個值越大,則說明內核消耗CPU時間就越多。cpu:顯示了CPU的使用狀態us顯示了用戶進程消耗CPU時間百分比。如果us值越高則說明消耗CPU的時間越多,如果us的值長期大於50%則需要優化程序或演算法。sy顯示內核消耗CPU時間百分比。如果us+sy值大於80%,則可能存在CPU資源不足情況。id顯示CPU處於空閑狀態時間百分比。wa顯示IO等待所佔用CPU時間百分比。wa越高,則IO等待越嚴重,則考慮提高磁碟讀寫性能。wa參考值20%。sar命令:可以對每個方面進行單獨的統計,但是增加了系統開銷,但是對系統的統計結果不會有很大影響。
由上圖可以看出我的系統只有一個CPU,如果有多個CPU的話會顯示多個。在多個CPU的情況下,如果想對其中一個CPU進行信息統計的話,則使用sar
–P
0
2
3
對第一個CPU進行信息統計。%user顯示用戶進程消耗的CPU時間百分比%nice顯示運行正常進程所消耗CPU時間百分比%system顯示了系統進程消耗CPU時間百分比%iowait顯示IO等待所佔用CPU時間百分比%idle顯示了CPU處在空閑時間百分比%steal顯示在內存相對緊張的環境下pagein強制對不同的頁面進行的steal操作。最後一行Average顯示了上面統計的平均值。如果在一個多CPU的系統中,如果程序使用了單線程,會造成CPU整體使用率不高,導致一個CPU在使用,其他CPU處在閑置狀態。
www.shiwu.com
iostat命令:主要用於統計磁碟IO狀態,但是也能查看CPU使用情況,但是只能顯示所有CPU的平均信息。
這里各列的意思與sar中的意思一樣。uptime命令:主要統計系統當前的運行狀況。
系統在1分鍾內,5分鍾內,15分鍾內的平均負荷。上面的vmstat,sar,iostat,uptime命令主要是用於統計CPU信息的,還可以通過top,ps查看進程使用情況,來判斷CPU負載過大的原因。
作者
alan9101

❹ LINUX下如何用DD命令來測試存儲的讀寫性能

通常就是 計算讀寫一定大小的塊耗費的時間 ,本身有速度輸出
基本的測試如下
磁碟讀速度
sync;time dd if=[mountpoint] of=/dev/null bs=4096k count=2000
測試數據大小為:4096k×2000
磁碟寫速度
sync;time dd if=/dev/zero of=[mountpoint] bs=4096k count=2000
測試數據大小為:4096k×2000
[mountpoint]替換為你實際的掛載點
以上都是測試 2000個 4M塊的速度 可以通過改變 bs大小來分析不同級別塊的性能

可以通過寫更詳細的腳本來實現更詳細的輸出

❺ 如何排除linux系統的讀寫緩存進行磁碟性能測試

1、先熟悉兩個特殊的設備:
(1)/dev/null:回收站、無底洞。
(2)/dev/zero:產生字元。
2、測試磁碟寫能力
代碼如下:
time dd if=/dev/zero of=/testw.dbf bs=4k count=100000
因為/dev//zero是一個偽設備,它只產生空字元流,對它不會產生IO,所以,IO都會集中在of文件中,of文件只用於寫,所以這個命令相當於測試磁碟的寫能力。命令結尾添加oflag=direct將跳過內存緩存,添加oflag=sync將跳過hdd緩存。
3、測試磁碟讀能力
代碼如下:
time dd if=/dev/sdb of=/dev/null bs=4k
因為/dev/sdb是一個物理分區,對它的讀取會產生IO,/dev/null是偽設備,相當於黑洞,of到該設備不會產生IO,所以,這個命令的IO只發生在/dev/sdb上,也相當於測試磁碟的讀能力。(Ctrl+c終止測試)
4、測試同時讀寫能力
代碼如下:
time dd if=/dev/sdb of=/testrw.dbf bs=4k
在這個命令下,一個是物理分區,一個是實際的文件,對它們的讀寫都會產生IO(對/dev/sdb是讀,對/testrw.dbf是寫),假設它們都在一個磁碟中,這個命令就相當於測試磁碟的同時讀寫能力。

❻ 如何進行linux 磁碟io讀寫性能測試分析,並且監控、記錄測試數據

#!/bin/bash
device_name=(`df -lh |grep "^/dev/sd"|awk '{print $1}'`)
mount_dir=(`df -lh |grep "^/dev/sd"|awk '{print $6}'`)
#echo ${device_name[@]}
#echo ${mount_dir[@]}
num=${#device_name[@]}
#echo $num

for ((i=0;i<=$num-1;i++));
do
touch ${mount_dir[$i]}/file1
if [ $? -eq 0 ]
then
echo -e "\e[32m${device_name[$i]} is OK\e[0m"
else
echo -e "\e[31m${device_name[$i]} is error\e[0m"
fi
rm -rf ${mount_dir[$i]}/file1
done
~

這是一個檢查磁碟好壞的腳本,是我線上用的,但我沒寫到計劃任務里,只是偶爾檢查一下磁碟,祝你成功

❼ linux怎樣提升磁碟讀寫性能

關於頁面緩存的信息,可以用
cat /proc/meminfo
看到。其中的Cached 指用於pagecache的內存大小(diskcache-SwapCache)。隨著寫入緩存頁,Dirty 的值會增加。
一旦開始把緩存頁寫入硬碟,Writeback的值會增加直到寫入結束。

Linux 用pdflush進程把數據從緩存頁寫入硬碟,查看有多少個pdflush進程
cat /proc/sys/vm/nr_pdflush_threads

pdflush的行為受/proc/sys/vm中的參數的控制
/proc/sys/vm/dirty_writeback_centisecs (default 500):
1/100秒, 多長時間喚醒pdflush將緩存頁數據寫入硬碟。默認5秒喚醒2個(更多個)線程。
如果wrteback的時間長於dirty_writeback_centisecs的時間,可能會出問題。

pdflush的第一件事是讀取
/proc/sys/vm/dirty_expire_centiseconds (default 3000)
1/100秒。緩存頁里數據的過期時間(舊數據),在下一個周期內被寫入硬碟。默認30秒是一個很長的時間。

第二件事是判斷內存是否到了要寫入硬碟的限額,由參數決定:
/proc/sys/vm/dirty_background_ratio (default 10)
百分值,保留過期頁緩存(臟頁緩存)的最大值。是以MmeFree+Cached-Mapped的值為基準的

pdflush寫入硬碟看兩個參數:
1 數據在頁緩存中是否超出30秒,如果是,標記為臟頁緩存;
2 臟頁緩存是否達到工作內存的10%;

以下參數也會影響到pdflush
/proc/sys/vm/dirty_ratio (default 40)
總內存的最大百分比,系統所能擁有的最大臟頁緩存的總量。超過這個值,開啟pdflush寫入硬碟。如果cache增長快於pdflush,那麼整個系統在40%的時候遇到I/O瓶頸,所有的I/O都要等待cache被pdflush進硬碟後才能重新開始。

對於有高度寫入操作的系統
dirty_background_ratio: 主要調整參數。如果需要把緩存持續的而不是一下子大量的寫入硬碟,降低這個值。
dirty_ratio: 第二調整參數。

Swapping參數
/proc/sys/vm/swappiness
默認,linux傾向於從物理內存映射到硬碟緩存,保持硬碟緩存盡可能大。未用的頁緩存會被放進swap區。
數值為0,將會避免使用swapping
100,將會盡量使用swapping
少用swapping會增加程序的響應速度;多用swapping將會提高系統的可用性。

如果有大量的寫操作,為避免I/O的長時間等待,可以設置:
$ echo 5 > /proc/sys/vm/dirty_background_ratio
$ echo 10 > /proc/sys/vm/dirty_ratio

文件系統數據緩沖需要頻繁的內存分配。加大保留內存的值能提升系統速度和穩定。小於8G的內存,保留內存為64M,大於8G的設置為256M
$ echo 65536 > /proc/sys/vm/min_free_kbytes


I/O 調度器
cat /sys/block/[disk]/queue/scheler

4中調度演算法
noop anticipatory deadline [cfq]
deadline : deadline 演算法保證對既定的IO請求以最小的延遲時間。
anticipatory: 有個IO發生後,如果又有進程請求IO,則產生一個默認6ms猜測時間,猜測下一個進程請求IO是干什麼。這對於隨機讀取會造成較大的延時。
資料庫應用很糟糕,而對於Web Server等則會表現不錯。
cfq: 對每個進程維護一個IO隊列,各個進程發來的IO請求會被cfq以輪循方式處理,對每一個IO請求都是公平。適合離散讀的應用。
noop: 對所有IO請求都用FIFO隊列形式處理。默認IO不會存在性能問題。

改變調度器
$ echo deadline > /sys/block/sdX/queue/scheler
對於資料庫伺服器,deadline演算法是推薦的。

提高調度器請求隊列的
$ echo 4096 > /sys/block/sdX/queue/nr_requests

有大量的讀請求,默認的請求隊列應付不過來,可以提高這個值。缺點是要犧牲一定的內存。
為了增加連續讀取的吞吐量,可以增加預讀數據量。預讀的實際值是自適應的,所以使用一個較高的值,不會降低小型隨機存取的性能。
$ echo 4096 > /sys/block/sdX/queue/read_ahead_kb
如果LINUX判斷一個進程在順序讀取文件,那麼它會提前讀取進程所需文件的數據,放在緩存中。伺服器遇到磁碟寫活動高峰,導致請求處理延遲非常大(超過3秒)。通過調整內核參數,將寫活動的高峰分布成頻繁的多次寫,每次寫入的數據比較少。這樣可以把尖峰的寫操作削平成多次寫操作。以這種方式執行的效率比較低,因為內核不太有機會組合寫操作。但對於繁忙的伺服器,寫操作將更一致地進行,並將極大地改進互動式性能。

/proc/sys/vm/dirty_ratio

控制文件系統的寫緩沖區的大小,單位是百分比,表示占系統內存的百分比,表示當寫緩沖使用到系統內存多少的時候,開始向磁碟寫出數據。增大之會使用更多系統內存用於磁碟寫緩沖,也可以極大提高系統的寫性能。但是,當你需要持續、恆定的寫入場合時,應該降低其數值。

/proc/sys/vm/dirty_background_ratio

控制文件系統的pdflush進程,在何時刷新磁碟。單位是百分比,表示系統內存的百分比,pdflush用於將內存中的內容和文件系統進行同步,比如說,當一個文件在內存中進行修改,pdflush負責將它寫回硬碟.每當內存中的垃圾頁(dirty page)超過10%的時候,pdflush就會將這些頁面備份回硬碟.增大之會使用更多系統內存用於磁碟寫緩沖,也可以極大提高系統的寫性能。但是,當你需要持續、恆定的寫入場合時,應該降低其數值:

/proc/sys/vm/dirty_writeback_centisecs

控制內核的臟數據刷新進程pdflush的運行間隔。單位是 1/100 秒。預設數值是500,也就是 5 秒。如果你的系統是持續地寫入動作,那麼實際上還是降低這個數值比較好,這樣可以把尖峰的寫操作削平成多次寫操作。
如果你的系統是短期地尖峰式的寫操作,並且寫入數據不大(幾十M/次)且內存有比較多富裕,那麼應該增大此數值。
該參數的設置應該小於dirty_expire_centisecs,但也不能太小,太小I/O太頻繁,反而
使系統性能下降。具體可能需要在生產環境上測試。據說1:6 (dirty_expire_centisecs : dirty_writeback_centisecs )的比例比較好。

/proc/sys/vm/dirty_expire_centisecs

聲明Linux內核寫緩沖區裡面的數據多「舊」了之後,pdflush進程就開始考慮寫到磁碟中去。單位是 1/100秒。預設是 30000,也就是 30 秒的數據就算舊了,將會刷新磁碟。對於特別重載的寫操作來說,這個值適當縮小也是好的,但也不能縮小太多,因為縮小太多也會導致IO提高太快。
當然,如果你的系統內存比較大,並且寫入模式是間歇式的,並且每次寫入的數據不大(比如幾十M),那麼這個值還是大些的好。

/proc/sys/vm/vfs_cache_pressure

表示內核回收用於directory和inode cache內存的傾向;預設值100表示內核將根據pagecache和swapcache,把directory和inode cache保持在一個合理的百分比;降低該值低於100,將導致內核傾向於保留directory和inode cache;增加該值超過100,將導致內核傾向於回收directory和inode cache

/proc/sys/vm/min_free_kbytes

表示強制Linux VM最低保留多少空閑內存(Kbytes)。
預設設置:724(512M物理內存)

/proc/sys/vm/nr_pdflush_threads

表示當前正在運行的pdflush進程數量,在I/O負載高的情況下,內核會自動增加更多的pdflush進程。

/proc/sys/vm/overcommit_memory

指定了內核針對內存分配的策略,其值可以是0、1、2。

0, 表示內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,並把錯誤返回給應用進程。

1, 表示內核允許分配所有的物理內存,而不管當前的內存狀態如何。

2, 表示內核允許分配超過所有物理內存和交換空間總和的內存(參照overcommit_ratio)。

預設設置:0

/proc/sys/vm/overcommit_ratio

如果overcommit_memory=2,可以過載內存的百分比,通過以下公式來計算系統整體可用內存。系統可分配內存=交換空間+物理內存*overcommit_ratio/100
預設設置:50(%)

/proc/sys/vm/page-cluster

表示在寫一次到swap區的時候寫入的頁面數量,0表示1頁,1表示2頁,2表示4頁。
預設設置:3(2的3次方,8頁)

/proc/sys/vm/swapiness

表示系統進行交換行為的程度,數值(0-100)越高,越可能發生磁碟交換。

更改:
/etc/sysctl.conf

vm.dirty_ratio=40

sysctl -p

查看:

find /proc/sys/vm -name dirty* -print | while read name; do echo $name ;cat ${name}; done

❽ Linux 如何測試 IO 性能(磁碟讀寫速度

linux下測試磁碟IO讀寫速度
[root@node3 /]# time dd if=/dev/sda2 of=/dev/null bs=8k count=524288
524288+0 records in
524288+0 records out
4294967296 bytes (4.3 GB) copied, 37.4222 seconds, 115 MB/s
real 0m37.497s
user 0m0.036s
sys 0m1.320s
了4.3G的數據,平均速度為115M/s

[root@node3 /]# hdparm -t /dev/sda2
/dev/sda2:
Timing buffered disk reads: 284 MB in 3.00 seconds = 94.55 MB/sec

[root@node3 /]# hdparm -t /dev/sda2
/dev/sda2:
Timing buffered disk reads: 292 MB in 3.02 seconds = 96.82 MB/sec

讀了將近300M的數據,平均速度大約為95M/s
經過以上的測試數據大體估算該磁碟的性能大約為100M/s

❾ 怎樣分析linux的性能指標

一、處理器參數
這是一個很簡單的參數,它直觀的描述了每個CPU的利用率。在xSeries架構中,如果CPU的利用率長時間的超過80%,就可能是出現了處理器的瓶頸。
Runable processes
這個值描述了正在准備被執行的進程,在一個持續時間里這個值不應該超過物理CPU數量的10倍,否則CPU方面就可能存在瓶頸。
Blocked
描述了那些因為等待I/O操作結束而不能被執行的進程,Blocked可能指出你正面臨I/O瓶頸。
User time
描述了處理用戶進程的百分比,包括nice time。如果User time的值很高,說明系統性能用在處理實際的工作。
System time
描述了CPU花費在處理內核操作包括IRQ和軟體中斷上面的百分比。如果system time很高說明系統可能存在網路或者驅動堆棧方面的瓶頸。一個系統通常只花費很少的時間去處理內核的操作。
Idle time
描述了CPU空閑的百分比。
Nice time
描述了CPU花費在處理re-nicing進程的百分比。
Context switch
系統中線程之間進行交換的數量。
Waiting
CPU花費在等待I/O操作上的總時間,與blocked相似,一個系統不應該花費太多的時間在等待I/O操作上,否則你應該進一步檢測I/O子系統是否存在瓶頸。
Interrupts
Interrupts值包括硬Interrupts和軟Interrupts,硬Interrupts會對系統性能帶
來更多的不利影響。高的Interrupts值指出系統可能存在一個軟體的瓶頸,可能是內核或者驅動程序。注意Interrupts值中包括CPU時鍾導
致的中斷(現代的xServer系統每秒1000個Interrupts值)。
二、內存參數
Free memory
相比其他操作系統,Linux空閑內存的值不應該做為一個性能參考的重要指標,因為就像我們之前提到過的,Linux內核會分配大量沒有被使用的內存作為文件系統的緩存,所以這個值通常都比較小。
Swap usage
這個值描述了已經被使用的swap空間。Swap
usage只表示了Linux管理內存的有效性。對識別內存瓶頸來說,Swap In/Out才是一個比較又意義的依據,如果Swap
In/Out的值長期保持在每秒200到300個頁面通常就表示系統可能存在內存的瓶頸。
Buffer and cache
這個值描述了為文件系統和塊設備分配的緩存。注意在Red Hat Enterprise Linux
3和更早一些的版本中,大部分空閑內存會被分配作為緩存使用。在Red Hat Enterprise Linux
4以後的版本中,你可以通過修改/proc/sys/vm中的page_cache_tuning來調整空閑內存中作為緩存的數量。
Slabs
描述了內核使用的內存空間,注意內核的頁面是不能被交換到磁碟上的。
Active versus inactive memory
提供了關於系統內存的active內存信息,Inactive內存是被kswapd守護進程交換到磁碟上的空間。
三、網路參數
Packets received and sent
這個參數表示了一個指定網卡接收和發送的數據包的數量。
Bytes received and sent
這個參數表示了一個指定網卡接收和發送的數據包的位元組數。
Collisions per second
這個值提供了發生在指定網卡上的網路沖突的數量。持續的出現這個值代表在網路架構上出現了瓶頸,而不是在伺服器端出現的問題。在正常配置的網路中沖突是非常少見的,除非用戶的網路環境都是由hub組成。
Packets dropped
這個值表示了被內核丟掉的數據包數量,可能是因為防火牆或者是網路緩存的缺乏。
Overruns
Overruns表達了超出網路介面緩存的次數,這個參數應該和packets dropped值聯繫到一起來判斷是否存在在網路緩存或者網路隊列過長方面的瓶頸。
Errors
這個值記錄了標志為失敗的幀的數量。這個可能由錯誤的網路配置或者部分網線損壞導致,在銅口千兆乙太網環境中部分網線的損害是影響性能的一個重要因素。
四、塊設備參數
Iowait
CPU等待I/O操作所花費的時間。這個值持續很高通常可能是I/O瓶頸所導致的。
Average queue length
I/O請求的數量,通常一個磁碟隊列值為2到3為最佳情況,更高的值說明系統可能存在I/O瓶頸。
Average wait
響應一個I/O操作的平均時間。Average wait包括實際I/O操作的時間和在I/O隊列里等待的時間。
Transfers per second
描述每秒執行多少次I/O操作(包括讀和寫)。Transfers per second的值與kBytes per second結合起來可以幫助你估計系統的平均傳輸塊大小,這個傳輸塊大小通常和磁碟子系統的條帶化大小相符合可以獲得最好的性能。
Blocks read/write per second
這個值表達了每秒讀寫的blocks數量,在2.6內核中blocks是1024bytes,在早些的內核版本中blocks可以是不同的大小,從512bytes到4kb。
Kilobytes per second read/write
按照kb為單位表示讀寫塊設備的實際數據的數量。

熱點內容
分布式緩存部署步驟 發布:2025-05-14 13:24:51 瀏覽:610
php獲取上一月 發布:2025-05-14 13:22:52 瀏覽:89
購買雲伺服器並搭建自己網站 發布:2025-05-14 13:20:31 瀏覽:688
sqlserver建立視圖 發布:2025-05-14 13:11:56 瀏覽:484
搭建httpsgit伺服器搭建 發布:2025-05-14 13:09:47 瀏覽:255
新電腦拿回來我該怎麼配置 發布:2025-05-14 13:09:45 瀏覽:240
視頻伺服器新建ftp用戶 發布:2025-05-14 13:03:09 瀏覽:225
php花生 發布:2025-05-14 12:54:30 瀏覽:550
java人才 發布:2025-05-14 12:29:10 瀏覽:649
如何打開軟密碼 發布:2025-05-14 12:28:55 瀏覽:427