転送やウイルススキャン、何か重たい処理を走らせたいのに、フルパワーを使ってやってほしくないときに。
niceコマンドなどで優先度を下げるのも手ですが、それでも空いてる部分は使われるので、リソース監視などを入れていたらアラートメールが飛んできちゃうのはうざいはず。
そんなわけでコントロールグループ (CGROUP)を使いCPU使用率を70%まででお願い!などを実現する。
適当にサイト見ながらテストした記録を残している程度なので間違いがあったらごめんなさい。
こんなところを参考に。
cent7ならtoolも入れてね。
yum install libcgroup yum install libcgroup-tools
まずは設定にグループを追記する
/etc/cgconfig.conf ~~~~~~~~~~~~~~~~ group hoge { cpu { cpu.cfs_quota_us = 700000; cpu.cfs_period_us = 1000000; } }
これでhogeのcpuの制限を設けることが出来ます
こちらに詳しく設定する値が書かれています。まぁ、簡単に設定するだけなら
cpu.cfs_period_us = 1000000;
cpu.cfs_quota_us = X000;
と書いて、Xに「このグループに使わせたいCPU(%)」×「CPUの個数」を書いて置けば問題ないかと。
↑の追記した例だとCPUが一つの場合には70%、2つならば35%使用することが出来ます。
さて、これで設定が完了。
サービスを開始。もう起動してるなら読み込み直し。
[root]# service cgconfig restart Stopping cgconfig service: [ OK ] Starting cgconfig service: [ OK ]
まずは普通に実行してみる
[root]# sh /hoge/hoge/virus-check.sh ↑clamのウイルススキャンを実行。別窓でモニタリング [root]# top |grep "clam" 24558 root 39 19 196m 123m 10m D 19.9 12.5 0:00.90 clamscan 24558 root 39 19 305m 216m 10m D 30.6 21.8 0:01.82 clamscan 24558 root 39 19 396m 305m 10m R 75.9 30.7 0:04.10 clamscan 24558 root 39 19 514m 415m 10m R 96.9 41.8 0:07.01 clamscan 24558 root 39 19 620m 518m 10m R 98.2 52.2 0:09.96 clamscan 24558 root 39 19 627m 530m 15m R 59.6 53.4 0:11.75 clamscan 24558 root 39 19 635m 530m 15m R 55.9 53.5 0:13.43 clamscan 24558 root 39 19 636m 531m 15m R 55.2 53.5 0:15.09 clamscan 24558 root 39 19 635m 530m 15m R 57.9 53.5 0:16.83 clamscan 24558 root 39 19 635m 531m 15m R 45.9 53.5 0:18.21 clamscan 24558 root 39 19 636m 531m 15m R 66.2 53.5 0:20.20 clamscan ----------- SCAN SUMMARY ----------- Known viruses: 6438857 Engine version: 0.99.3 Scanned directories: 154 Scanned files: 1546 Infected files: 0 Data scanned: 53.69 MB Data read: 24.57 MB (ratio 2.18:1) Time: 35.500 sec (0 m 35 s)
virus-check.shではウイルススキャンを実施するようなことを書いてあります。見づらいですがtopコマンドのCPU使用率が19%~最大で98.2%までいっていることがわかります。
では今度はさっきのグループに所属させて実行。Amazonさんのt2.microなので、CPUは1個。
hogeグループを作ったので、「cgexec -g cpu:hoge コマンド」などで実行出来ます。
[root]# cgexec -g cpu:hoge sh /hoge/hoge/virus-check.sh ↑clamのウイルススキャンを実行。別窓でモニタリング [root]# top |grep "clam" 24476 root 39 19 174m 102m 9.9m D 19.7 10.3 0:00.70 clamscan 24476 root 39 19 305m 216m 9.9m D 36.6 21.8 0:01.80 clamscan 24476 root 39 19 361m 271m 9.9m R 51.6 27.4 0:03.35 clamscan 24476 root 39 19 448m 354m 9.9m R 70.2 35.7 0:05.46 clamscan 24476 root 39 19 531m 431m 9.9m R 69.9 43.4 0:07.56 clamscan 24476 root 39 19 620m 517m 9.9m R 70.2 52.1 0:09.67 clamscan 24476 root 39 19 627m 530m 14m D 64.2 53.4 0:11.60 clamscan 24476 root 39 19 635m 530m 14m R 66.2 53.4 0:13.59 clamscan 24476 root 39 19 635m 530m 14m R 59.9 53.4 0:15.39 clamscan 24476 root 39 19 635m 530m 14m D 58.3 53.4 0:17.14 clamscan 24476 root 39 19 635m 530m 14m D 64.2 53.4 0:19.07 clamscan 24476 root 39 19 636m 531m 14m R 56.9 53.5 0:20.78 clamscan ----------- SCAN SUMMARY ----------- Known viruses: 6438857 Engine version: 0.99.3 Scanned directories: 154 Scanned files: 1546 Infected files: 0 Data scanned: 53.69 MB Data read: 24.57 MB (ratio 2.18:1) Time: 37.211 sec (0 m 37 s)
おー。70.2%までしかアクセスしていないのでしっかりと制限が効いています。
ちなみに使用率を下げているので当たり前ですが実行時間は伸びます。
まぁウィルススキャンって裏で片手間でやってもらうことで、本業みたいに100%全力でやらないでほしいので、こんな感じで。
おまけ
お前にやるリソースは7%だけだ!
group hoge { cpu { cpu.cfs_quota_us = 70000; cpu.cfs_period_us = 1000000; } }
動作確認(上のと同じものを実行)
[root]# top |grep "clam" 26285 root 39 19 111m 47m 10m R 6.3 4.8 0:00.19 clamscan 26285 root 39 19 131m 67m 10m R 7.0 6.8 0:00.40 clamscan 26285 root 39 19 167m 95m 10m R 7.0 9.7 0:00.61 clamscan 26285 root 39 19 189m 116m 10m R 7.3 11.8 0:00.83 clamscan 26285 root 39 19 208m 135m 10m R 7.0 13.7 0:01.04 clamscan 26285 root 39 19 230m 158m 10m R 6.7 15.9 0:01.24 clamscan 26285 root 39 19 242m 170m 10m R 7.3 17.1 0:01.46 clamscan 26285 root 39 19 296m 207m 10m R 6.7 20.9 0:01.66 clamscan 26285 root 39 19 305m 217m 10m D 6.3 21.8 0:01.85 clamscan 26285 root 39 19 306m 218m 10m R 7.0 22.0 0:02.06 clamscan 26285 root 39 19 317m 229m 10m R 7.0 23.1 0:02.27 clamscan 26285 root 39 19 325m 236m 10m R 7.0 23.8 0:02.48 clamscan 26285 root 39 19 334m 245m 10m R 7.3 24.7 0:02.70 clamscan 26285 root 39 19 343m 253m 10m R 7.0 25.6 0:02.91 clamscan 26285 root 39 19 353m 263m 10m R 7.0 26.5 0:03.12 clamscan 26285 root 39 19 361m 271m 10m R 7.0 27.4 0:03.33 clamscan 26285 root 39 19 371m 281m 10m R 7.3 28.3 0:03.55 clamscan 26285 root 39 19 380m 290m 10m R 7.3 29.2 0:03.77 clamscan 26285 root 39 19 390m 299m 10m R 7.0 30.2 0:03.98 clamscan 26285 root 39 19 401m 309m 10m R 7.0 31.1 0:04.19 clamscan 26285 root 39 19 409m 317m 10m R 7.3 31.9 0:04.41 clamscan 26285 root 39 19 418m 325m 10m R 7.0 32.7 0:04.62 clamscan 26285 root 39 19 425m 332m 10m R 7.0 33.5 0:04.83 clamscan 26285 root 39 19 434m 340m 10m R 7.3 34.3 0:05.05 clamscan 26285 root 39 19 442m 348m 10m R 7.0 35.1 0:05.26 clamscan 26285 root 39 19 449m 355m 10m R 7.3 35.8 0:05.48 clamscan 26285 root 39 19 457m 363m 10m R 7.0 36.6 0:05.69 clamscan 26285 root 39 19 465m 371m 10m R 7.3 37.4 0:05.91 clamscan 26285 root 39 19 474m 378m 10m D 6.3 38.1 0:06.10 clamscan 26285 root 39 19 483m 387m 10m R 7.7 39.0 0:06.33 clamscan 26285 root 39 19 490m 394m 10m R 7.0 39.7 0:06.54 clamscan 26285 root 39 19 500m 403m 10m R 7.3 40.6 0:06.76 clamscan 26285 root 39 19 512m 412m 10m R 7.0 41.6 0:06.97 clamscan 26285 root 39 19 518m 419m 10m R 6.7 42.3 0:07.17 clamscan 26285 root 39 19 524m 425m 10m R 7.0 42.9 0:07.38 clamscan 26285 root 39 19 533m 433m 10m R 7.0 43.7 0:07.59 clamscan 26285 root 39 19 541m 440m 10m R 7.0 44.4 0:07.80 clamscan 26285 root 39 19 550m 448m 10m R 7.3 45.1 0:08.02 clamscan 26285 root 39 19 556m 454m 10m R 6.7 45.8 0:08.22 clamscan 26285 root 39 19 566m 463m 10m R 7.0 46.6 0:08.43 clamscan 26285 root 39 19 572m 470m 10m R 7.0 47.4 0:08.64 clamscan 26285 root 39 19 579m 477m 10m R 7.0 48.1 0:08.85 clamscan 26285 root 39 19 594m 493m 10m R 7.0 49.7 0:09.06 clamscan 26285 root 39 19 614m 512m 10m R 7.0 51.6 0:09.27 clamscan 26285 root 39 19 620m 518m 10m R 7.0 52.2 0:09.48 clamscan 26285 root 39 19 620m 518m 10m R 7.3 52.2 0:09.70 clamscan 26285 root 39 19 620m 518m 10m R 7.0 52.2 0:09.91 clamscan 26285 root 39 19 620m 518m 10m R 6.7 52.2 0:10.11 clamscan 26285 root 39 19 625m 528m 14m R 7.3 53.2 0:10.33 clamscan 26285 root 39 19 627m 530m 14m R 7.0 53.4 0:10.54 clamscan 26285 root 39 19 627m 530m 14m R 7.0 53.4 0:10.75 clamscan 26285 root 39 19 627m 530m 15m R 6.7 53.4 0:10.95 clamscan 26285 root 39 19 627m 530m 15m R 7.0 53.4 0:11.16 clamscan 26285 root 39 19 627m 530m 15m R 7.0 53.4 0:11.37 clamscan 26285 root 39 19 627m 531m 15m R 7.3 53.5 0:11.59 clamscan 26285 root 39 19 627m 530m 15m R 7.0 53.4 0:11.80 clamscan 26285 root 39 19 627m 530m 15m R 6.7 53.4 0:12.00 clamscan 26285 root 39 19 628m 530m 15m D 4.7 53.4 0:12.14 clamscan 26285 root 39 19 635m 530m 15m R 9.3 53.4 0:12.42 clamscan 26285 root 39 19 636m 531m 15m R 7.3 53.5 0:12.64 clamscan 26285 root 39 19 636m 531m 15m R 6.7 53.5 0:12.84 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.4 0:13.05 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.4 0:13.26 clamscan 26285 root 39 19 635m 530m 15m R 7.3 53.5 0:13.48 clamscan 26285 root 39 19 636m 531m 15m R 6.7 53.5 0:13.68 clamscan 26285 root 39 19 635m 530m 15m R 7.3 53.5 0:13.90 clamscan 26285 root 39 19 635m 531m 15m R 7.0 53.5 0:14.11 clamscan 26285 root 39 19 635m 531m 15m R 7.0 53.5 0:14.32 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:14.53 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:14.74 clamscan 26285 root 39 19 635m 531m 15m R 6.7 53.5 0:14.94 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:15.15 clamscan 26285 root 39 19 635m 531m 15m R 7.0 53.5 0:15.36 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:15.57 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:15.78 clamscan 26285 root 39 19 635m 531m 15m R 7.0 53.5 0:15.99 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:16.20 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:16.41 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:16.62 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:16.83 clamscan 26285 root 39 19 635m 531m 15m R 7.0 53.5 0:17.04 clamscan 26285 root 39 19 635m 531m 15m R 7.3 53.5 0:17.26 clamscan 26285 root 39 19 635m 530m 15m R 6.7 53.5 0:17.46 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:17.67 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:17.88 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:18.09 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:18.30 clamscan 26285 root 39 19 636m 531m 15m R 7.0 53.5 0:18.51 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:18.72 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:18.93 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:19.14 clamscan 26285 root 39 19 635m 530m 15m R 7.0 53.5 0:19.35 clamscan 26285 root 39 19 635m 530m 15m R 7.3 53.5 0:19.57 clamscan 26285 root 39 19 636m 531m 15m R 6.7 53.5 0:19.77 clamscan 26285 root 39 19 635m 531m 15m R 7.0 53.5 0:19.98 clamscan 26285 root 39 19 635m 531m 15m R 7.3 53.5 0:20.20 clamscan 26285 root 39 19 635m 531m 15m R 6.7 53.5 0:20.40 clamscan 26285 root 39 19 635m 531m 15m R 7.0 53.5 0:20.61 clamscan 26285 root 39 19 635m 531m 15m R 7.3 53.5 0:20.83 clamscan 26285 root 39 19 635m 531m 15m R 7.0 53.5 0:21.04 clamscan 26285 root 39 19 635m 531m 15m R 7.0 53.5 0:21.25 clamscan ----------- SCAN SUMMARY ----------- Known viruses: 6438857 Engine version: 0.99.3 Scanned directories: 154 Scanned files: 1546 Infected files: 0 Data scanned: 53.69 MB Data read: 24.57 MB (ratio 2.18:1) Time: 305.906 sec (5 m 5 s)
おぉ、7%に抑えつつ、エラーで終わらず完了してる・・・。 35秒で終わってるものを5分以上かけてるけど。