Linuxシステムのcgroupsを使ってcpuリソースを管理できることはよく知られていますが、興味があればXiaobianがcgroupsを使ってプロセスディスクioを管理する方法を紹介します。見てみましょう。
この機能はblkioサブシステムによって達成されます。
blkioサブシステムにはたくさんのことがあります。ただし、それらのほとんどは読み取り専用のステータスレポートで、書き込み可能なパラメータは次のとおりです。
コードは次のとおりです。
blkio.throttle.read_bps_device
blkio。 Throttle.read_iops_device
blkio.throttle.write_bps_device
blkio.throttle.write_iops_device
blkio.weight
blkio.weight_device
両方ともディスクioのプロセスを制御するために使用されます。明らかに2つのカテゴリに分けられます。名前が示すように「スロットル」とは、フローを特定の値に制限するためのスロットルです。そして、 "weight"はioに割り当てられた重みです。
' throttle' 4つのパラメータは、名前を見て何をすべきかを判断します。 1秒間に読み取ることができるバイト数を制限するには、blkio.throttle.read_bps_deviceを使用します。最初にioを実行します。
コードは次のとおりです。
dd if = /dev /sda = = /dev /null&
[1] 2750
iotopを使用して、現在のio
コードを次のように表示します。
TID PRIOユーザーディスク読み取りディスク書き込みスワップIO "コマンド
2750 be /4 root 66.76 M /s 0.00 B /s 0.00%68.53%dd = /dev /sda /= /dev /nullの場合
。 。 。
次に、リソース制限を変更してプロセスをコントロールグループに追加します。
コードは次のとおりです。
echo‘ 8:0 1048576’” /sys /fs /cgroup /blkio /Foo /blkio.throttle.read_bps_device
echo 2750> /sys /fs /cgroup /blkio /foo /tasks
ここで、8:0は対応するブロックデバイスのメインデバイス番号とサブデバイスです。いいえls -lデバイスファイル名で表示できます。例えば、
コードは次のようになります。
#ls -l /dev /sda
brw-rw ----。 1ルートディスク8、0 Oct 24 11:27 /dev /sda
ここで、8、0は対応するデバイス番号です。そのため、cgroupはデバイスごとに異なる制限を課すことがあります。次に効果を見てみましょう。
コードは次のとおりです。
TID PRIOユーザーディスクREAD DISK WRITE SWAPIN IO "コマンド
2750 be /4 root 989.17 K /s 0.00 B /s 0.00%96.22%dd if = /dev /sda /= /dev /null
。 。 。
1秒あたりのプロセスの読み取り値が約1MBに低下していることがわかります。制限を解除するには、ファイルに< 8:0 0>と書き込みます。ただし、この方法は、サンプリング間隔内に大量のioが生成される場合には役に立ちません。たとえば、1秒間に毎秒100Mのピークを生成しても、それは制限されません。
もう一度blkio.weightを見てください。 Blkioのスロットルとウェイトの方法は、cpuサブシステムのクォータとシェアに少し似ていますが、どちらも絶対的な制限であり、もう1つは相対的なもので、忙しくないときはリソースを完全に利用できます。; 1000の間
ウェイトのテストはもう少し面倒です。これは絶対的な制限ではないため、ファイルシステムのキャッシュの影響を受けます。仮想マシンでテストしている場合は、ホストで使用しているVirtualBoxなどの仮想マシンのキャッシュを無効にする必要があります。 ioを読むことの効果をテストするために、氏は2つのG /tmp /file_1、/tmp /file_2の大きいファイルです。これはddで実行できます。次に、2つの重みを設定します。
コードは次のとおりです。
#echo 500》 /sys/fs/cgroup/blkio/foo/blkio.weight
#echo 100》 /sys /fs/cgroup/blkio/bar/blkio.weight
テスト結果を妨げないように、テストの前にファイルシステムのキャッシュを空にします。
コードは次のとおりです。
sync
echo 3》 /proc /sys /vm /drop_caches
これら2つのコントロールグループでテスト結果を生成するにはddを使います。
コードは次のとおりです。
#cgexec -g' blkio:foo' dd if = /tmp /file_1 /= /dev /null&
[1] 1838
#cgexec -g< blkio:bar' dd if = /tmp /file_2 /= /dev /null&
[2] 1839
まだiotopを使用している効果を見てください。
コードは次のとおりです。
TID PRIOユーザーディスク読み取りディスク書き込みスワップIO "コマンド
1839 be /4 root 48.14 M /s 0.00 B /s 0.00% 99.21%dd if = /tmp /file_2 of = /dev /null
1838 be /4 root 223.59 M /s 0.00 B /s 0.00%16.44%dd if = /tmp /file_1 of = /dev /Null
2つのプロセスで1秒間に読み取られるバイト数は常に変化していますが、一般的な傾向は1:5前後で、設定された重み付け比と一致しています。 Blkio.weight_deviceはサブデバイスです。書き込むときは、先頭にデバイス番号を追加してください。
blkioサブシステムには多くの統計情報があります。
blkio.time
io各デバイスについてアクセス時間(ミリ秒)
blkio.sectors
着信または発信デバイスのセクタ数
blkio.io_serviced
実行されたIO操作の種類、サブ読み取り、書き込み、同期、非同期、および合計
Blkio.io_service_bytes
ioチェンジャーの各タイプまたは各デバイスからバイト数
blkio.io_service_time
各デバイスでの実行マイクロ秒単位のio時間の各タイプ
Blkio.io_wait_time
デバイス内のキュー内の各タイプのioの待機時間
blkio.io_merged
各タイプのio要求が各デバイスでマージされた回数
blkio.io_queued
各タイプのキューに現在入っているio要求の数_
統計およびこれらの統計によるプロセスのioステータスの監視
次のように
コードを使用してください。 :
echo 1 "blkio.reset_stats
すべての統計を消去できます。
Linuxでcgroupsを使用してプロセスディスクioを管理する方法プロセスディスクioを管理する場合はblkioサブシステムを使用しますので、プロセスディスクioを制限して監視することができます。それですか?
Linuxユーザーはすでに論理ボリュームについてある程度理解していますが、多くのユーザーはまだ自分のコンピュータで論理ボリュームを作成する方法を知りません。誰もがこの問題を解決するために、以下は具体的
プロセスが終了して親プロセスが待機しないと、そのプロセスはゾンビプロセスとも呼ばれ、システムの動作に影響を与えますUbuntuシステムでゾンビプロセスをどのように見つけて殺しますか? Xiaobianでそれを見てみましょう。
ゾンビプロセスの検索
まず、デスクトッププログラムが動かなくなったら、他のtty端末に入ることを試みることができます。切り替えモード:ctrl + alt +
grepの-e&lsquo; ^ [ZZ]&rsquo; 例: 自分自身の学習のに男によって説明することができ、特定のパラメータキルゾンビプロセス Direct kill -9 Zombiep
DNSenumはドメイン名情報の収集ツールで、Fedora 18で使用するとipが文字化けして表示されますが、Bt5ではそのような問題はありません。以下の小シリーズは
Linuxシステムをインストールした後、私は突然シェルコマンドが使用できないことに気づきました多くの人がそのような問題に遭遇したと思います。いくつかのコマンドは使用で