Docker CPUリソース制限——CPUスライス機能テスト
25255 ワード
先のエッセイであるDocker CPUリソース制限では、COUのあるコアまたはいくつかのコアに対する制御について説明していましたが、今日はCPUスライス機能、すなわちCOU占有率について説明します.
テストステップ
1、CPUテストイメージをダウンロードする.Agileek/cpuset-testは、CPUのリソースをフルに使用する機能を有するCPUをテストするためのイメージを与える.
2、何のアプリケーションも開かない時のCPU占有状況を観察する
3、一つの容器を開けて、CPUに占める比重は1000で、CPUの使用状況を観察する
別の端末でCPU占有状況を観察する
このとき、PID 17258のプロセス(つまり、私たちが開いたばかりのdockerコンテナ)のCPUは、すべての8つのCPUの100%、つまり800%を占めていることがわかります.
4、もう一つの容器を開けて、CPUに占める比重は3000で、CPUの使用状況を観察する
別の端末でCPU占有状況を観察する
PID 17258のプロセス(私たちが開いた最初のdockerコンテナ)のCPUは、8つのCPUの1/4、つまり200%を占めていることがわかります.新しくオープンしたのは、3000のdockerコンテナステーションより8つのCPUの3/4、つまり600%に達した.
テストステップ
1、CPUテストイメージをダウンロードする.Agileek/cpuset-testは、CPUのリソースをフルに使用する機能を有するCPUをテストするためのイメージを与える.
$ docker pull agileek/cpuset-test
2、何のアプリケーションも開かない時のCPU占有状況を観察する
[root@elk ~]# mpstat -P ALL 5 10
Linux 3.10.0-123.el7.x86_64 (elk) 02/16/2016 _x86_64_ (8 CPU)
08:10:57 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08:11:02 AM all 0.05 0.00 0.13 0.00 0.00 0.00 0.00 0.00 0.00 99.82
08:11:02 AM 0 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.60
08:11:02 AM 1 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.80
08:11:02 AM 2 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.60
08:11:02 AM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
08:11:02 AM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
08:11:02 AM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
08:11:02 AM 6 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.80
08:11:02 AM 7 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80
[root@elk ~]# top top - 08:22:48 up 27 days, 20:31, 4 users, load average: 2.18, 7.36, 4.61 Tasks: 216 total, 1 running, 215 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 16151132 total, 3742548 used, 12408584 free, 6392 buffers KiB Swap: 8200188 total, 0 used, 8200188 free. 1847800 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 11373 logstash 39 19 8087940 457188 15804 S 0.7 2.8 145:09.16 java 482 root 20 0 0 0 0 S 0.3 0.0 29:06.19 xfsaild/dm-1
31713 elastic+ 20 0 5797384 269444 14436 S 0.3 1.7 155:43.65 java 1 root 20 0 50684 4488 2336 S 0.0 0.0 0:32.37 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.45 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:04.83 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.50 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/4
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/5
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/6
16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/7
17 root 20 0 0 0 0 S 0.0 0.0 16:09.47 rcu_sched 18 root 20 0 0 0 0 S 0.0 0.0 1:01.54 rcuos/0
19 root 20 0 0 0 0 S 0.0 0.0 0:53.77 rcuos/1
20 root 20 0 0 0 0 S 0.0 0.0 1:00.50 rcuos/2
21 root 20 0 0 0 0 S 0.0 0.0 0:53.75 rcuos/3
22 root 20 0 0 0 0 S 0.0 0.0 0:55.59 rcuos/4
23 root 20 0 0 0 0 S 0.0 0.0 0:44.15 rcuos/5
24 root 20 0 0 0 0 S 0.0 0.0 0:53.57 rcuos/6
3、一つの容器を開けて、CPUに占める比重は1000で、CPUの使用状況を観察する
[root@elk ~]# docker run -it --rm -c 1000 agileek/cpuset-test
Burning 8 CPUs/cores
別の端末でCPU占有状況を観察する
[root@elk ~]# top
top - 08:14:33 up 27 days, 20:22, 4 users, load average: 7.26, 3.04, 1.18
Tasks: 220 total, 1 running, 219 sleeping, 0 stopped, 0 zombie
%Cpu(s):100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 16151132 total, 3745232 used, 12405900 free, 6508 buffers
KiB Swap: 8200188 total, 0 used, 8200188 free. 1849724 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17258 root 20 0 36732 936 564 S 800.0 0.0 19:13.78 cpuburn
17218 root 20 0 0 0 0 S 0.3 0.0 0:00.02 kworker/0:2
17348 root 20 0 123680 1724 1148 R 0.3 0.0 0:00.01 top
1 root 20 0 50684 4488 2336 S 0.0 0.0 0:32.35 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.45 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:04.83 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.50 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/4
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/5
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/6
このとき、PID 17258のプロセス(つまり、私たちが開いたばかりのdockerコンテナ)のCPUは、すべての8つのCPUの100%、つまり800%を占めていることがわかります.
4、もう一つの容器を開けて、CPUに占める比重は3000で、CPUの使用状況を観察する
[root@elk ~]# docker run -it --rm -c 3000 agileek/cpuset-test
Burning 8 CPUs/cores
別の端末でCPU占有状況を観察する
[root@elk ~]# top
top - 08:17:35 up 27 days, 20:25, 4 users, load average: 11.86, 6.29, 2.72
Tasks: 227 total, 2 running, 225 sleeping, 0 stopped, 0 zombie
%Cpu(s):100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 16151132 total, 3752724 used, 12398408 free, 6624 buffers
KiB Swap: 8200188 total, 0 used, 8200188 free. 1851692 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17494 root 20 0 36732 932 560 S 602.1 0.0 3:54.95 cpuburn 17258 root 20 0 36732 936 564 S 197.9 0.0 39:34.78 cpuburn 927 root 20 0 19112 1168 948 S 0.3 0.0 3:04.34 irqbalance
17532 root 20 0 123680 1732 1148 R 0.3 0.0 0:00.01 top
1 root 20 0 50684 4488 2336 S 0.0 0.0 0:32.36 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.45 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:04.83 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.50 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/4
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/5
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/6
PID 17258のプロセス(私たちが開いた最初のdockerコンテナ)のCPUは、8つのCPUの1/4、つまり200%を占めていることがわかります.新しくオープンしたのは、3000のdockerコンテナステーションより8つのCPUの3/4、つまり600%に達した.