国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

Linux資源管理-IO優(yōu)先級

2024-06-28 13:24:17
字體:
供稿:網(wǎng)友
linux資源管理-IO優(yōu)先級

前一篇博客介紹了利用 cgroup 來控制進(jìn)程的 CPU和內(nèi)存使用情況, 這次補(bǔ)上使用 cgroup 來控制進(jìn)程的IO優(yōu)先級的方法.

前提條件

如果想控制進(jìn)程的IO優(yōu)先級, 需要內(nèi)核的支持, 內(nèi)核編譯時需要打開下面2個參數(shù).

CONFIG_BLK_CGROUP=yCONFIG_CFQ_GROUP_IOSCHED=y

查看是否開啟這2個內(nèi)核編譯選項的方法很簡單:

root@debian-113:~# grep -i 'blk_cgroup' /boot/config-`uname -r`root@debian-113:~# grep -i 'cfq_group' /boot/config-`uname -r`

如果這2個內(nèi)核選項沒有打開, 只能重新編譯內(nèi)核后再來實(shí)驗下面的實(shí)例了.

再次通過 /PRoc/cgroups 來查看 blkio 是否已經(jīng)啟用.

root@debian-113:~# cat /proc/cgroups #subsys_name    hierarchy    num_cgroups    enabledcpuset    0    1    1cpu    0    1    1cpuacct    0    1    1memory    0    1    1devices    0    1    1freezer    0    1    1net_cls    0    1    1blkio    0    1    1    <-- enabled = 1, 說明已經(jīng)啟用perf_event    0    1    1

如果 blkio 沒有啟用, 可以通過grub設(shè)置啟動參數(shù)來啟用它.

類似的可以參考: Linux資源控制-CPU和內(nèi)存 中 實(shí)例4 - cgroup 對使用的內(nèi)存的控制 中啟用memory的方法。

除此之外, 還得查看是否能夠?qū)?CFQ 作為IO調(diào)度程序來使用.

root@debian-113:~# cat /sys/class/block/sda/queue/scheduler noop deadline [cfq]

上述結(jié)果表示支持cfq調(diào)度, []括住cfq 表示當(dāng)前使用的就是 cfq調(diào)度.

如果 cat 的結(jié)果中沒有 cfq, 需要重新編譯內(nèi)核, 使之能夠支持 cfq調(diào)度.

如果 cat 的結(jié)果中有 cfq, 但是 cfq 不是當(dāng)前正在使用的調(diào)度程序, 即 [] 沒有括在 cfq上, 那么

cat cfq /sys/class/block/sda/queue/scheduler     <-- 將當(dāng)前的IO調(diào)度程序設(shè)置成 cfq

注: 上面的 sda 是我的測試的硬盤, 如果你的是 sdb 或者其它, 請對應(yīng)修改.

實(shí)例 - 控制IO優(yōu)先級
  1. 掛載 cgroup文件系統(tǒng), 掛載參數(shù) -o blkio
  2. 建立2個group, 分別為 A 和 B
  3. 默認(rèn)情況, 2個 group中的dd進(jìn)程同時進(jìn)行文件操作
  4. 查看默認(rèn)情況下, 2個dd進(jìn)程完成的時間
  5. 設(shè)置 A 的優(yōu)先級為 100, B 的優(yōu)先級為 1000
  6. 同時在2個group A 和 B 中運(yùn)行 dd進(jìn)程
  7. 查看group A 和 B 中的 dd進(jìn)程完成的時間

實(shí)驗之前, 先制作測試腳本. (簡單寫了一個如下)

#!/bin/bash##################################################################### 1. 創(chuàng)造2個測試文件, 大小都是1G# 2. 將當(dāng)前進(jìn)程加入到指定 cgroup# 3. 執(zhí)行 dd 操作# 4. 刪除 測試文件# 5. 顯示log####################################################################function usage(){    echo "./blkio-test.sh <group1> <group2>"    exit 1}if [ $# != 2 ]; then    usagefigroup1_src=~/group1.srcgroup2_src=~/group2.srcgroup1_log=/tmp/group1.loggroup2_log=/tmp/group2.loggroup1=$1group2=$2echo "生成測試數(shù)據(jù) $group1_src 和 $group2_src (大小都是1G)"dd if=/dev/zero of=$group1_src count=1024 bs=1Mdd if=/dev/zero of=$group2_src count=1024 bs=1Mecho "同時在 $group1 和 $group2 中開始 dd 測試"echo 3 > /proc/sys/vm/drop_cachesecho $$ >> $group1/tasks(date; dd if=$group1_src of=/dev/null; date;) > $group1_log 2>&1 &echo $$ >> $group2/tasks(date; dd if=$group2_src of=/dev/null; date;) > $group2_log 2>&1 &waitecho "測試完成!"echo "開始清除測試文件"rm -rf $group1_src $group2_srcecho "測試文件清除完成"echo "------------------------------------------"echo "顯示group1 的log"cat $group1_logecho "------------------------------------------"echo "顯示group2 的log"cat $group2_logecho "------------------------------------------"

開始實(shí)驗:

# 掛載 cgroup 文件系統(tǒng)root@debian-113:~# mount -t cgroup -o blkio cgroup /mnt/cgroup/root@debian-113:~# mkdir /mnt/cgroup/{A,B}root@debian-113:~# ll /mnt/cgroup/total 0drwxr-xr-x 2 root root 0 Sep  5 13:23 Adrwxr-xr-x 2 root root 0 Sep  5 13:23 B-r--r--r-- 1 root root 0 Sep  5 13:23 blkio.io_merged-r--r--r-- 1 root root 0 Sep  5 13:23 blkio.io_queued-r--r--r-- 1 root root 0 Sep  5 13:23 blkio.io_service_bytes-r--r--r-- 1 root root 0 Sep  5 13:23 blkio.io_serviced-r--r--r-- 1 root root 0 Sep  5 13:23 blkio.io_service_time-r--r--r-- 1 root root 0 Sep  5 13:23 blkio.io_wait_time--w------- 1 root root 0 Sep  5 13:23 blkio.reset_stats-r--r--r-- 1 root root 0 Sep  5 13:23 blkio.sectors-r--r--r-- 1 root root 0 Sep  5 13:23 blkio.time-rw-r--r-- 1 root root 0 Sep  5 13:23 blkio.weight   <-- 這個就是設(shè)置IO優(yōu)先級的文件-rw-r--r-- 1 root root 0 Sep  5 13:23 blkio.weight_device-rw-r--r-- 1 root root 0 Sep  5 13:23 cgroup.clone_children--w--w--w- 1 root root 0 Sep  5 13:23 cgroup.event_control-rw-r--r-- 1 root root 0 Sep  5 13:23 cgroup.procs-rw-r--r-- 1 root root 0 Sep  5 13:23 notify_on_release-rw-r--r-- 1 root root 0 Sep  5 13:23 release_agent-rw-r--r-- 1 root root 0 Sep  5 13:23 tasks# 默認(rèn)2個組內(nèi)的IO優(yōu)先級都是500root@debian-113:~# cat /mnt/cgroup/A/blkio.weight500  <-- 這個值的范圍是 100 ~ 1000, 值越大優(yōu)先級越高root@debian-113:~# cat /mnt/cgroup/B/blkio.weight500# 默認(rèn)情況下的測試結(jié)果如下: A和B耗時都是 20秒root@debian-113:~# ./blkio-test.sh /mnt/cgroup/A /mnt/cgroup/B生成測試數(shù)據(jù) /root/group1.src 和 /root/group2.src (大小都是1G)1024+0 records in1024+0 records out1073741824 bytes (1.1 GB) copied, 6.01188 s, 179 MB/s1024+0 records in1024+0 records out1073741824 bytes (1.1 GB) copied, 9.4272 s, 114 MB/s同時在 /mnt/cgroup/A 和 /mnt/cgroup/B 中開始 dd 測試測試完成!開始清除測試文件測試文件清除完成------------------------------------------顯示group1 的logFri Sep  5 13:26:31 CST 20142097152+0 records in2097152+0 records out1073741824 bytes (1.1 GB) copied, 20.0504 s, 53.6 MB/sFri Sep  5 13:26:51 CST 2014------------------------------------------顯示group2 的logFri Sep  5 13:26:31 CST 20142097152+0 records in2097152+0 records out1073741824 bytes (1.1 GB) copied, 18.8583 s, 56.9 MB/sFri Sep  5 13:26:51 CST 2014------------------------------------------# 修改A的優(yōu)先級為100, B的優(yōu)先級為1000root@debian-113:~# echo 100 > /mnt/cgroup/A/blkio.weightroot@debian-113:~# echo 1000 > /mnt/cgroup/B/blkio.weightroot@debian-113:~# cat /mnt/cgroup/A/blkio.weight100root@debian-113:~# cat /mnt/cgroup/B/blkio.weight1000# 不同優(yōu)先級下的測試結(jié)果如下: A耗時 19秒; B耗時 11秒root@debian-113:~# ./blkio-test.sh /mnt/cgroup/A /mnt/cgroup/B生成測試數(shù)據(jù) /root/group1.src 和 /root/group2.src (大小都是1G)1024+0 records in1024+0 records out1073741824 bytes (1.1 GB) copied, 6.52967 s, 164 MB/s1024+0 records in1024+0 records out1073741824 bytes (1.1 GB) copied, 8.01311 s, 134 MB/s同時在 /mnt/cgroup/A 和 /mnt/cgroup/B 中開始 dd 測試測試完成!開始清除測試文件測試文件清除完成------------------------------------------顯示group1 的logFri Sep  5 13:30:06 CST 20142097152+0 records in2097152+0 records out1073741824 bytes (1.1 GB) copied, 18.5598 s, 57.9 MB/sFri Sep  5 13:30:25 CST 2014------------------------------------------顯示group2 的logFri Sep  5 13:30:06 CST 20142097152+0 records in2097152+0 records out1073741824 bytes (1.1 GB) copied, 10.6127 s, 101 MB/sFri Sep  5 13:30:17 CST 2014------------------------------------------

可以看出, IO優(yōu)先級調(diào)整之后, 確實(shí)優(yōu)先級高的cgroup中的進(jìn)程能更快完成IO操作.

總結(jié)

其實(shí) cgroup 除了能夠IO優(yōu)先級之外, 還可以控制進(jìn)程的其它IO屬性, 具體參見掛載在 cgroup 的IO相關(guān)設(shè)置文件.

各個文件的具體含義, 請參考更詳細(xì)的 cgroup 相關(guān)文檔.


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 娄底市| 麻城市| 莱阳市| 诏安县| 屯留县| 昌平区| 紫阳县| 泸定县| 颍上县| 仁怀市| 玉田县| 安国市| 怀柔区| 会东县| 广元市| 香格里拉县| 永仁县| 芒康县| 上饶县| 浮山县| 大渡口区| 新野县| 宝山区| 甘泉县| 玉田县| 扬州市| 聂拉木县| 阳原县| 辉南县| 铜鼓县| 大冶市| 汉源县| 英超| 珲春市| 柘荣县| 诸城市| 延长县| 漠河县| 太白县| 吉木乃县| 宣恩县|