File: nhfsstone.8

package info (click to toggle)
manpages-ja 0.5.0.0.20221215%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 29,304 kB
  • sloc: perl: 161; makefile: 61
file content (389 lines) | stat: -rw-r--r-- 14,103 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
.\" @(#)nhfsstone.man 1.13 89/10/05 Copyright (c) 1989, Legato Systems Inc
.\" See DISCLAIMER file for restrictions
.\"
.\" Japanese Version Copyright (c) 2006 Yuichi SATO
.\"         all rights reserved.
.\" Translated Wed Jun 14 06:50:33 JST 2006
.\"         by Yuichi SATO <ysato444@yahoo.co.jp> catch up to v1.0.7
.\"
.TH NHFSSTONE 8 "4 October 1989"
.SH 名前
nhfsstone \- ネットワークファイルシステムのベンチマークプログラム
.SH 書式
.B nhfsstone
[
.B \-v
] [[
.B \-t secs
] | [
.B -c calls
]] [
.B \-l load
] [
.B \-p nprocs
] [
.B \-m mixfile
] [
.B dir
]...
.SH 説明
.B nhfsstone
(n\-f\-s\-stone と発音し、"h" は読まない) は
.SM NFS
クライアント上で人為的な負荷を生成するために使用する。
この負荷には、特定の組み合わせの
.SM NFS
操作が含まれる。
このプログラムはサーバーの平均応答時間 (1 回の呼び出し当りのミリ秒数) と
負荷 (1 秒当りの呼び出し回数) を表示する。
このプログラムは、クライアントのカーネルの
.SM NFS
統計と所要時間に基づいて、呼び出しパターンを調整する。
負荷は時間または
.SM NFS
呼び出しの数を指定することで生成できる。
.LP
.B nhfsstone
は進捗状況の監視にカーネルの
.SM NFS
統計情報を使用するので、
NFS ファイルシステム以外の性能を計測するのには使えない。
.LP
.B nhfsstone
プログラムは、ファイルとディレクトリ操作を使って、
特定のシステムコールに対応する
.SM NFS
操作を生成する。
これを行うため、
.SM NFS
クライアント側の参照ポートの実装についての知識に基づいた、
いくつかのトリックを使っている。
例えば、長いファイル名を使ってカーネルの名前検索キャッシュを回避させることで、
.BR stat (2)
システムコールで
.SM NFS
lookup 操作を生成する。
.LP
.SM NFS
操作の組み合わせは、組み合わせ (mix) ファイルで設定できる。
これは
.BR nfsstat (8C)
コマンド (下記の "\-m" オプションを参照) の出力である。
組み合わせファイルから取得される割合は、
nfsstat
で表示される割合ではなく、
.SM NFS
呼び出しの数に基づいて計算される。
組み合わせファイルで 0% となっている操作は、
.B nhfsstone
から呼び出されない。
実際のサーバーにおける負荷の組み合わせでは、特定の
.SM NFS
操作の割合が 0% になっているかもしれないが、
呼び出し数は 0 でないことが多い。
.B nhfsstone
は「割合が 0% になっている操作の呼び出し数は、
サーバーの応答に些細な影響しか与えない」と仮定している。
.LP
通常は
.B nhfsstone
に対して、使用する 2 つ以上のテストディレクトリのリストを指定すべきである
(デフォルトではカレントディレクトリを使用する)。
使用するテストディレクトリは、
典型的なサーバーの負荷を現実的にシミュレートするために、
サーバー上の別々のディスクとパーティションに置くべきである。
.B nhfsstone
プロセスはディレクトリ
.B <dir>/testdir<n>
を扱う
(ここで <n> は 0 から
.B nprocs
\- 1 までの数値である)。
処理するディレクトリ名が既に存在する場合、
テストファイルのセットが正しいかをチェックする。
存在しない場合は、ディレクトリを作成して (訳註: テストファイルを) 配置する。
.SH オプション
.TP 12
.B \-v
詳細な出力。
.TP
.B \-t secs
指定した実行時間 (単位: 秒) と負荷に基づいて、
.B calls
を設定する。
.TP
.B \-c calls
生成する
.SM NFS
呼び出しの総数 (デフォルトは 5000)。
.TP
.B \-l load
1 秒当りの
.SM NFS
呼び出しを生成する負荷 (デフォルトは 30)。
.TP
.B \-p nprocs
負荷生成を行うサブプロセスを fork させる数 (デフォルトは 7)。
これは 1 つのマシンで生成できる負荷の総量を最大化するために使用される。
(CPU が遅い、またはメモリ量が少ない) 小さなクライアントマシンでは、
スワッピングを避けるために、プロセス数を少なくした方が良いかもしれない。
.TP
.B \-m mixfile
生成する
.SM NFS
操作の組み合わせ。
.B mixfile
のフォーマットは
.BR nfsstat (8C)
プログラムの出力と同じである。
組み合わせファイルは、サーバー上で "nfsstat \-s > mixfile" を
実行することで生成できる。
デフォルトの操作の組み合わせは以下の通り:
null 0%, getattr 13%, setattr 1%,
root 0%, lookup 34%, readlink 8%, read 22%, wrcache 0%, write 15%, create 2%,
remove 1%, rename 0%, link 0%, symlink 0%, mkdir 0%, rmdir 0%, readdir 3%,
fsstat 1%.
.SH NHFSSTONE の使用法
他の全てのベンチマークと同様に、
使用される試験内容を注意深く設定した場合にのみ、
.B nhfsstone
は有用な数値を提供できる。
このプログラムはサーバーを測定するので、
.SM NFS
リクエストの生成に制限がないクライアント上で実行すべきである。
クライアントマシンは、速い CPUと優れたイーサーネットインタフェースを備え、
テストの最中にその他の用途で使用すべきではない、という意味である。
Sun\-3/50 では、CPU を使いきる前に、1 秒当り 60
.SM NFS
呼び出しが可能である。
.LP
.B nhfsstone
は「クライアントで生成された全ての
.SM NFS
呼び出しが 1 つのサーバーに対して行われ、全ての
.SM NFS
負荷はこのクライアントに依るものである」と仮定している。
この仮定を維持するため、テストの最中は
クライアントとサーバーの両方を出来る限り静かにさせて
(他の仕事をさせないで) おくべきである。
.LP
ネットワークを高負荷で使用していると、
衝突による遅れがサーバー性能の変化を隠してしまうかもしれない。
クライアントとサーバーのどちらかでエラー率が高いと、
失われたパケットや壊れたパケットを再送信するために遅れが生じる可能性がある。
.BR netstat (8C)
.B \-i
を使ってクライアントとサーバーにおけるエラー率と衝突率を計測できる。
.LP
サーバーに対する
.SM NFS
クライアントの影響を最も正しくシミュレートするには、
サーバーがエクスポートするテストディレクトリを
少なくとも 2 つのディスクパーティションに置いて、
かつそれらのパーティションを出来る限り離すべきである。
.BR dkinfo (8)
コマンドを使うと、BSD 系システムにおける
ディスクの物理的ジオメトリが分かる。
.SM NFS
操作ではディスク全体へランダムにアクセスする傾向があるので、
全ての
.B nhfsstone
のテストディレクトリを 1 つのパーティションに置いたり、
2 つのパーティションが近かったりすると、現実的な結果を示さない。
.LP
全てのテストにおいて、テストを繰り返し行って
結果を比較するのは、良い考えである。
呼び出しの数は
.RB ( \-c
オプションを使って) 呼び出し一回当りの時間 (ミリ秒) の変化が
充分小さくなるまで増やすことができる。
呼び出し回数を増やしても助けにならない (訳註: 何の変化も見られない) 場合、
実験の設定に何か問題があるかもしれない。
1 つの一般的な問題としては、
クライアントのテストマシンにメモリが多すぎる場合がある。
メモリが多すぎると、
.B nhfsstone
がクライアントのキャッシュに勝てず、
.SM NFS
操作がサーバーに全く行かなくなる。
キャッシュに問題があると感じた場合は、
.B -p
オプションを使ってプロセス数を増やすことができる。
.LP
.B nhfsstone
で生成される数値は、クライアントマシンでのテスト設定を等しくして、
異なるサーバー設定を比較する場合に最も有効である。
実行する毎に
.B nhfsstone
のパラメータを変更すると、意味のある比較が出来ない数値が生成される。
たとえば、負荷を生成するプロセスの数は、
クライアントマシンでのコンテクスト切り替えやその他の遅れにより、
計測される応答時間に影響を与えるかもしれない。
一方、
.SM NFS
操作の組み合わせを変更すると、実験の全体的な特性を変えることになる。
その他のクライアント設定についての変更は、
結果が比較できるかに影響を与える可能性がある。
.B nhfsstone
は実際の
.SM NFS
統計をサンプリングして、操作の負荷と組み合わせを調整することで、
クライアント設定の違いを補正しようとするが、
いくつかの変更は負荷にも組合わせにも反映されない。
例えば、負荷も組み合わせも変更せず、より速い CPU を組み込んだり、
別の
.SM NFS
ファイルシステムをマウントすると、応答時間に影響が出るだろう。
.LP
異なるサーバー設定を比較する場合、
第 1 段階では、クライアントのテストディレクトリを設定し、
.B nhfsstone
をいくつかの負荷で実行して変動が適度に小さいことを確かめる。
第 2 段階では、興味を持ったいくつかの負荷で
.B nhfsstone
を実行し、結果を保存する。
第 3 段階では、サーバーの設定を変更する
(メモリを増やす・ディスクコントローラを変更する、など)。
最終段階では、
.B nhfsstone
を同じ負荷で再度実行し、結果を比較する。
.SH 関連項目
.LP
ソースコード
.B nhfsstone.c
には、プログラムの詳細な操作を記述したコメントが書かれている。
.SH エラーメッセージ
.TP
.B "illegal calls value"
コマンドラインで指定された
.B \-c
フラグの後の
.B calls
引き数が正の数でない。
.TP
.B "illegal load value"
コマンドラインで指定された
.B \-l
フラグの後の
.B load
引き数が正の数でない。
.TP
.B "illegal time value"
コマンドラインで指定された
.B \-t
フラグの後の
.B time
引き数が正の数でない。
.TP
.B "bad mix file"
コマンドラインで指定された
.B \-m
フラグの後の
.B mixfile
ファイル引き数にアクセスできない。
.TP
.B "can't find current directory"
親プロセスがカレントディレクトリのパス名を見つけることができない。
権限の問題を表していることが多い。
.TP
.B "can't fork"
親プロセスが子プロセスを fork できない。
メモリやスワップ空間といったリソースの不足の結果であることが多い。
.TP
.PD 0
.B "can't open log file"
.TP
.B "can't stat log"
.TP
.B "can't truncate log"
.TP
.B "can't write sync file"
.TP
.B "can't write log"
.TP
.B "can't read log"
.PD
同期ログファイルの作成・切り詰め・読み込み・書き出しの時に問題が起こった。
親プロセスがログファイルを /tmp に作成し、
子プロセスとの同期や通信に使用する。
.TP
.PD 0
.B "can't open test directory"
.TP
.B "can't create test directory"
.TP
.B "can't cd to test directory"
.TP
.B "wrong permissions on test dir"
.TP
.B "can't stat testfile"
.TP
.B "wrong permissions on testfile"
.TP
.B "can't create rename file"
.TP
.B "can't create subdir"
.PD
子プロセスがテストディレクトリの内容を作成・検査するときに問題が起こった。
権限の問題 (例えば、テストディレクトリが
別のユーザーによって作成されている場合) や
ファイルシステムがいっぱいである場合が多い。
.TP
.PD 0
.B "bad mix format: unexpected EOF after 'nfs:'"
.TP
.B "bad mix format: can't find 'calls' value"
.TP
.B "bad mix format: unexpected EOF after 'calls'"
.TP
.B "bad mix format: can't find %d op values"
.TP
.B "bad mix format: unexpected EOF"
.PD
.B mix
ファイルを解析しているときに問題が起こった。
このファイルの想定されるフォーマットは、
.BR nfsstat (8C)
コマンドを "\-s" オプションで実行したときの出力と同じである。
.TP
.B "op failed: "
内部的な疑似 NFS 操作の 1 つが失敗した。
操作の名前、例えば read, write, lookup が、失敗の種類と共に表示される。
.TP
.B "select failed"
select システムコールが予期せぬエラーを返した。
.SH バグ
.LP
.B nhfsstone
を NFS ファイルシステム以外で実行すると、プログラムが永久に動作し続ける。
このプログラムがカーネルの NFS 統計を使って、
充分な呼び出し回数が実行されたかを決定しているためである。
.LP
.B nhfsstone
が多くのファイルディスクリプタを使う。
クライアントのカーネルを再設定し、
利用可能なファイルテーブルエントリを増やす必要があるかもしれない。
.LP
.B nhfsstone
を使うシェルスクリプトは SIGUSR1
.RB ( signal (3)
を参照) をキャッチして無視する必要がある。
このシグナルはテストプロセスを同期するのに使われる。
このプロセスをキャッチしないと、
スクリプトを実行しているシェルが kill される。
.SH ファイル
.PD 0
.TP 20
.B /vmunix
システムのネームリスト
.TP
.B /dev/kmem
カーネルの仮想メモリ
.TP
.B ./testdir*
プロセス毎のテストディレクトリ
.TP
.B /tmp/nhfsstone%d
プロセスの同期ログファイル
.PD