2

cgroup blkioコントローラーを使用して I/O 帯域幅を制御しようとしています。

cgroup がセットアップされ、正常にマウントされました。grep cgroup /proc/mounts

戻り値:

....
cgroup /sys/fs/cgroup/blkio cgroup rw,relatime,blkio 0 0
...

次に、次のように、フォルダーに新しいフォルダーblkioを作成し、ファイルblkio.throttle.read_bps_deviceに書き込みます。

1. mkdir user1; cd user1
2. echo "8:5 10485760" > blkio.throtlle.read_bps_device
----> echo: write error: Invalid argument

私のデバイスのメジャー: マイナー番号は、ストレージ デバイスの使用df -hと使用から正しいです。ls -l /dev/sda5

また、次のようなデバイスのメジャー:マイナー番号を必要としないファイルに書き込むこともできますblkio.weight(ただし、 に対して同じエラーがスローされますblkio.weigth_device) 。

なぜそのエラーが発生したのですか?

4

1 に答える 1

6

使用している Linux のフレーバー/バージョンがわからない場合、RHEL 6.x カーネルでは、これは何らかの理由で機能しませんでしたが、RHEL のカスタム カーネルと他の Fedora バージョンで問題なくコンパイルすると機能しました。

カーネルでサポートされているかどうかを確認するには、lssubsys -am | grep blkio. ファイルをファイルできる場合はパスを確認してくださいblkio.throttle.read_bps_device

ただし、これを永続的に行う方法の例を次に示します。cgroup を設定して、プログラムが 1 Mibi/s を超えないように制限します。

  1. から MARJOR:MINOR デバイス番号を取得します。/proc/partitions
   `cat /proc/partitions | grep vda` 
     major minor  #blocks  name
     252        0   12582912 vda  --> this is the primary disk (with MAJOR:MINOR -> 8:0)
  1. プログラムを 1mib/s (値をバイト/秒に変換) に制限する場合は、次のようにします。=> 1MiB/秒 => 1024 kiB/1MiB * 1024 B/秒 = 1048576 バイト/秒

  2. /etc/cgconfig.conf を編集し、次のエントリを追加します

group ioload {
  blkio.throttle.read_bps_device = "252:0 1048576" 
  }
}
  1. /etc/cgrules.conf を編集

*: blkio ioload

  1. 必要なサービスを再起動します
`chkconfig {cgred,cgconfig} on;`
`service {cgred,cgconfig} restart`

参照: blkio-controller.txt

お役に立てれば!

于 2014-07-25T19:10:52.873 に答える