2011-08-24

EC2 t1.microインスタンスでCPU stealが発生しまくるっ!

ってことでなんとかできないかと試行錯誤してみました。

13:20頃が普通に負荷をかけた状況
13:40頃が試行錯誤後の状況です

今回負荷をかけるために使用したのは、super piというツール。

パラメータを21として早速実行してみました
./super_pi 21

一発目は3:39
------ Started super_pi run : 2011年 8月 24日 水曜日 13:19:24 JST
Start of PI calculation up to 2097152 decimal digits
End of initialization. Time=       0.543 Sec.
I= 1 L=       0        Time=       1.599 Sec.
I= 2 L=       0        Time=       1.859 Sec.
I= 3 L=       1        Time=       1.846 Sec.
I= 4 L=       2        Time=       1.870 Sec.
I= 5 L=       5        Time=       1.855 Sec.
I= 6 L=      10        Time=       1.846 Sec.
I= 7 L=      21        Time=       1.867 Sec.
I= 8 L=      43        Time=       1.998 Sec.
I= 9 L=      87        Time=       1.857 Sec.
I=10 L=     174        Time=       1.863 Sec.
I=11 L=     349        Time=       1.867 Sec.
I=12 L=     698        Time=       1.863 Sec.
I=13 L=    1396        Time=       1.851 Sec.
I=14 L=    2794        Time=       1.895 Sec.
I=15 L=    5588        Time=       1.973 Sec.
I=16 L=   11176        Time=       1.839 Sec.
I=17 L=   22353        Time=       1.820 Sec.
I=18 L=   44707        Time=       1.806 Sec.
I=19 L=   89415        Time=       1.761 Sec.
I=20 L=  178831        Time=       1.800 Sec.
End of main loop
End of calculation.    Time=      39.002 Sec.
End of data output.    Time=       0.171 Sec.
Total calculation(I/O) time=      39.173(       4.013) Sec.
------ Ended super_pi run : 2011年 8月 24日 水曜日 13:24:03 JST

後半はsteal発生しまくり
続けて二回目を実行すると最初からsteal発生しまくりで7:32
------ Started super_pi run : 2011年 8月 24日 水曜日 13:24:30 JST
Start of PI calculation up to 2097152 decimal digits
End of initialization. Time=       0.587 Sec.
I= 1 L=       0        Time=       1.706 Sec.
I= 2 L=       0        Time=       2.113 Sec.
I= 3 L=       1        Time=       2.018 Sec.
I= 4 L=       2        Time=       1.840 Sec.
I= 5 L=       5        Time=       1.844 Sec.
I= 6 L=      10        Time=       1.891 Sec.
I= 7 L=      21        Time=       1.954 Sec.
I= 8 L=      43        Time=       1.957 Sec.
I= 9 L=      87        Time=       1.878 Sec.
I=10 L=     174        Time=       1.857 Sec.
I=11 L=     349        Time=       1.871 Sec.
I=12 L=     698        Time=       1.944 Sec.
I=13 L=    1396        Time=       2.012 Sec.
I=14 L=    2794        Time=       2.037 Sec.
I=15 L=    5588        Time=       1.841 Sec.
I=16 L=   11176        Time=       1.852 Sec.
I=17 L=   22353        Time=       1.815 Sec.
I=18 L=   44707        Time=       1.793 Sec.
I=19 L=   89415        Time=       1.739 Sec.
I=20 L=  178831        Time=       1.616 Sec.
End of main loop
End of calculation.    Time=      39.638 Sec.
End of data output.    Time=       0.181 Sec.
Total calculation(I/O) time=      39.819(       4.014) Sec.
------ Ended super_pi run : 2011年 8月 24日 水曜日 13:32:02 JST

cpu使用率を制限しちゃえばsteal発生せずに済むんじゃね?
ってことで、cpulimitというツールを使ってcpu使用率を制限してみました。
こんな感じでsuper piのcpu使用率上限を18%に設定
cpulimit -e pi -l 18

1回目は殆どsteal発生せずで3:28
------ Started super_pi run : 2011年 8月 24日 水曜日 13:44:04 JST
Start of PI calculation up to 2097152 decimal digits
End of initialization. Time=       0.546 Sec.
I= 1 L=       0        Time=       1.637 Sec.
I= 2 L=       0        Time=       1.873 Sec.
I= 3 L=       1        Time=       1.865 Sec.
I= 4 L=       2        Time=       1.861 Sec.
I= 5 L=       5        Time=       1.878 Sec.
I= 6 L=      10        Time=       1.869 Sec.
I= 7 L=      21        Time=       1.879 Sec.
I= 8 L=      43        Time=       1.877 Sec.
I= 9 L=      87        Time=       1.864 Sec.
I=10 L=     174        Time=       1.873 Sec.
I=11 L=     349        Time=       1.877 Sec.
I=12 L=     698        Time=       1.882 Sec.
I=13 L=    1396        Time=       1.843 Sec.
I=14 L=    2794        Time=       1.858 Sec.
I=15 L=    5588        Time=       1.849 Sec.
I=16 L=   11176        Time=       1.860 Sec.
I=17 L=   22353        Time=       1.829 Sec.
I=18 L=   44707        Time=       1.829 Sec.
I=19 L=   89415        Time=       1.751 Sec.
I=20 L=  178831        Time=       1.654 Sec.
End of main loop
End of calculation.    Time=      38.643 Sec.
End of data output.    Time=       0.170 Sec.
Total calculation(I/O) time=      38.813(       3.936) Sec.
------ Ended super_pi run : 2011年 8月 24日 水曜日 13:47:32 JST

続けて2回目を実行しても殆どsteal発生せず1回目と同等の3:36
------ Started super_pi run : 2011年 8月 24日 水曜日 13:47:34 JST
 Start of PI calculation up to 2097152 decimal digits
 End of initialization. Time=       0.570 Sec.
 I= 1 L=       0        Time=       1.660 Sec.
 I= 2 L=       0        Time=       1.862 Sec.
 I= 3 L=       1        Time=       1.888 Sec.
 I= 4 L=       2        Time=       1.892 Sec.
 I= 5 L=       5        Time=       1.890 Sec.
 I= 6 L=      10        Time=       1.862 Sec.
 I= 7 L=      21        Time=       1.858 Sec.
 I= 8 L=      43        Time=       1.905 Sec.
 I= 9 L=      87        Time=       1.877 Sec.
 I=10 L=     174        Time=       1.882 Sec.
 I=11 L=     349        Time=       1.883 Sec.
 I=12 L=     698        Time=       1.862 Sec.
 I=13 L=    1396        Time=       1.873 Sec.
 I=14 L=    2794        Time=       1.865 Sec.
 I=15 L=    5588        Time=       1.870 Sec.
 I=16 L=   11176        Time=       1.864 Sec.
 I=17 L=   22353        Time=       1.842 Sec.
 I=18 L=   44707        Time=       1.830 Sec.
 I=19 L=   89415        Time=       1.756 Sec.
 I=20 L=  178831        Time=       1.645 Sec.
 End of main loop
 End of calculation.    Time=      38.825 Sec.
 End of data output.    Time=       0.170 Sec.
 Total calculation(I/O) time=      38.995(       3.964) Sec.
 ------ Ended super_pi run : 2011年 8月 24日 水曜日 13:51:10 JST

てことで、継続的に高いcpu使用率となるプロセスはインスタンス内でcpu使用率を制限してしまえばstealの発生を抑えられるようです。
合計で20%以下ぐらいになるように調整するとsteal発生せずに済むようです。

0 件のコメント:

コメントを投稿