回答編集履歴

1

コメントに対する追記

2018/12/12 01:47

投稿

nobonobo
nobonobo

スコア3367

test CHANGED
@@ -19,3 +19,85 @@
19
19
 
20
20
 
21
21
  注意点はtimeコマンドはシェル組み込みコマンドではなくgnu版を呼ぶ必要がある点です。
22
+
23
+
24
+
25
+ コメントからの質問に対する追記:
26
+
27
+
28
+
29
+ メモリ使用量やCPU使用量のプログラムの実行環境を阻害するものを取り除いた上限値は
30
+
31
+ コードの内容で決定します。その上であまりメモリやCPUの使用量が上がらない場合は
32
+
33
+ そのようになるコードを書いているだけです。
34
+
35
+ コードを変えずに外部のコマンドからいじっても変更することはできません。
36
+
37
+
38
+
39
+ 例えばとあるコマンドを実行した結果を表示したとき、
40
+
41
+
42
+
43
+ ```sh
44
+
45
+ $ /usr/bin/time -v XXXX
46
+
47
+ Command being timed: "XXXX"
48
+
49
+ User time (seconds): 4.82
50
+
51
+ System time (seconds): 4.57
52
+
53
+ Percent of CPU this job got: 41%
54
+
55
+ Elapsed (wall clock) time (h:mm:ss or m:ss): 0:22.65
56
+
57
+ Average shared text size (kbytes): 0
58
+
59
+ Average unshared data size (kbytes): 0
60
+
61
+ Average stack size (kbytes): 0
62
+
63
+ Average total size (kbytes): 0
64
+
65
+ Maximum resident set size (kbytes): 38384
66
+
67
+ Average resident set size (kbytes): 0
68
+
69
+ Major (requiring I/O) page faults: 9492
70
+
71
+ Minor (reclaiming a frame) page faults: 609811
72
+
73
+ Voluntary context switches: 110213
74
+
75
+ Involuntary context switches: 24058
76
+
77
+ Swaps: 0
78
+
79
+ File system inputs: 0
80
+
81
+ File system outputs: 0
82
+
83
+ Socket messages sent: 94
84
+
85
+ Socket messages received: 4939
86
+
87
+ Signals delivered: 875
88
+
89
+ Page size (bytes): 4096
90
+
91
+ Exit status: 0
92
+
93
+ ```
94
+
95
+
96
+
97
+ トータル実行時間`Elapsed (wall clock) time (h:mm:ss or m:ss): 0:22.65`に対し、
98
+
99
+ `User time (seconds): 4.82`と`System time (seconds): 4.57`を差し引いた13.26秒はI/O待ちです。
100
+
101
+
102
+
103
+ I/O待ちとはタイマーやディスクからの読み書き完了待ちや通信のレスポンス待ちなどです。I/O待ちが複数ある時これらを並行処理するようにしてあげると、よりメモリを使いながらCPUの使用率を上げることができます。うまくいけば全体の処理時間を短縮できます。