0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

cpuの割り当て時間

Last updated at Posted at 2024-05-19

プロセススケジューラ

  • 一つの論理CPU上で同時に動けるプロセスは一つだけ
  • 実行可能な複数のプロセスに、タイムスライスと呼ばれる単位で順番にCPUを使わせる

気づき

繰り返し一つのプロセスに対して少しずつ使用時間を割り当てることで、複数のプロセスを一つのCPUで処理できるのか。

プロセスの経過時間、使用時間

経過時間

プロセスが開始してから終了するまでの経過時間。ストップウォッチでプロセス開始時から終了時までを経過した値というイメージ。

使用時間

プロセスが実際に論理CPUを使用した時間

timeコマンド(CPUの経過、使用時間を計測)

root@********:**************# time ./load.py

real	0m2.516s
user	0m2.243s
sys	0m0.179s

realは経過時間 userとsysは使用時間を示します。userはプロセスがユーザランドで動作していた時間を指します。
これに対してsysは、プロセスによるシステムコール発行の延長でカーネルが動作していたときの時間を指します。

論理CPUを使わないコマンドの場合

root@********:**************# time  sleep 3

real	0m3.008s
user	0m0.004s
sys	0m0.000s

開始直後にCPUを手放しスリープ状態となり、....userとsysはほぼ0です。

論理CPUが一つに対して一つのプロセスの場合

プロセス数で指定した数だけ動作させて、全ての終了を待ちます。

root@********:**************# ./multiload.sh 1

real	0m2.400s
user	0m2.227s
sys	0m0.121s

論理CPUが一つに対して複数のプロセスの場合

root@********:**************# ./multiload.sh 2

real	0m4.196s
user	0m1.922s
sys	0m0.135s

real	0m4.318s
user	0m1.993s
sys	0m0.160s
root@********:**************# ./multiload.sh 3

real	0m6.711s
user	0m2.080s
sys	0m0.115s

real	0m6.791s
user	0m2.113s
sys	0m0.119s

real	0m6.801s
user	0m2.156s
sys	    0m0.084s

気づき

一つに時間を割けられないのでその分時間がかかっている。

論理CPUが複数に対して複数のプロセスの場合

root@********:**************# ./multiload.sh -m 1

real	0m2.433s
user	0m2.185s
sys	0m0.187s
root@********:**************# ./multiload.sh -m 2

real	0m4.400s
user	0m2.032s
sys	0m0.110s

real	0m4.509s
user	0m2.102s
sys	0m0.136s
root@********:**************#./multiload.sh -m 3

real	0m6.310s
user	0m1.955s
sys	0m0.110s

real	0m6.537s
user	0m2.129s
sys	0m0.039s

real	0m6.718s
user	0m2.258s
sys	0m0.075s

気づき

それぞれレニ時間を避けるから早くなっている。

realよりもuser+sysが大きくなることもある

計測の精度がそれほど高くないことから来ています。あまり気にしてもしょうがないので「こういうこともある」という意識を持っていただければいいです。

root@********:**************# time ./multiload.sh -m 2

real	0m4.215s
user	0m1.940s
sys	        0m0.129s

real	0m4.366s
user	0m2.106s
sys	        0m0.084s

real	0m4.378s
user	0m4.054s
sys	    0m0.213s

timeコマンドで得られるuserとsysの値は、情報取得対象のプロセス、および終了済みの子プロセスの値を合計したものなのです。したがってあるプロセスが子プロセスを生成して、それらがそれぞれ別の論理CPUで動作したような場合はrealよりもuser+sysの値が大きくなり得ます

気づき

自分のは大きくならなかった。

出典

感想

まだまだ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?