長南洋一
cyoic****@maple*****
2018年 2月 17日 (土) 10:48:19 JST
長南です。 xargs についても質問がいくつかあります。 ○ -P max-procs オプション: Please note that it is up to the called processes to properly manage parallel access to shared resources. For example, if more than one of them tries to print to stdout, the ouptut will be produced in an indeterminate order (and very likely mixed up) unless the processes collaborate in some way to prevent this. Using some kind of locking scheme is one way to prevent such problems. In general, using a locking scheme will help ensure correct output but reduce performance. If you don't want to tolerate the performance difference, simply arrange for each process to produce a separate output file (or otherwise use separate resources). 注意していただきたいが、共有リソースに対する並列アクセスをきちんと 管理するのは、呼び出されるプロセス側の問題だ。たとえば、複数の プロセスが標準出力に書き出そうとした場合、出力は不定の順番で生成 されることになる (だから,混じり合ってしまう可能性が高い)。そう ならないためには、プロセス同士が何らかの形で協力し合う必要があるわけだ。 ロッキング・スキームのようなものを使うのは、そうした問題を避けるための 一方法である。ただ、一般に、ロッキング・スキームの使用は、適切な出力を 保証してはくれるものの、パフォーマンスを低下させることになる。 パフォーマンスが違ってくることを受け入れたくないならば、各プロセスが それぞれ別の出力ファイルを作るように (あるいは、別のリソースを使うように) 工夫するのが単純ですっきりしている。 scheme という言葉が私にはうまく訳せません。と言うより、scheme という 概念がわからない。そんなわけで、「ロッキング・スキーム」とカタカナですが、 これで通じるでしょうか。何か適当な日本語がないものでしょうか (ここでは、 「仕組み」ぐらいかなと思いますけれど)。 それから、"performance difference" ですが、具体的には、すぐ前で 言っている「動作が遅くなること」と考えてよいのでしょうね。 別の解釈があるでしょうか。 ○ --process-slot-var=name: Set the environment variable name to a unique value in each running child process. Values are reused once child processes exit. This can be used in a rudimentary load distribution scheme,for example. 複数の子プロセスを同時実行しているとき、その各子プロセスで環境変数 name に ユニークな値をセットする。値は、子プロセスが終了すると、再利用される。 この機能は、たとえば、初歩的な負荷分散スキームで利用できる。 「複数の子プロセスを同時実行しているとき」は、each running ... の 補足・展開訳です。「初歩的な負荷分散スキームで利用できる」というのは、 具体的にどういうことで、どうやるんでしょうか。 ○ BUGS: The -L option is incompatible with the -I option, but perhaps should not be. -L オプションと -I オプションを組み合わせても、うまく行かない。組み合 わせて使えた方がよいのかもしれないが。 これは前回の翻訳でも悩みました。この incompatible は、「互換性がない」 ではなく、「両立しない」だと思います。そこまではよいとして、 "should not be" は "should not be incompatible" なのか、 "should not be compatible" なのか。文法的には前者のほうが自然だ と思うので、"shoud be compatible" の意味に訳したのですが、こういう 二重否定はまわりくどく、不自然な感じがしますから、後者と取れないこともありません。 それならば、「組み合わせて使えないのが妥当なのかもしれないが」ぐらいになります。 それから、ここでは訳注を復活するつもりです。つぎのような。 [訳注]: -I オプションの説明にあるように、-I replace-str を指定すると、 -L 1 が自動的に設定される。だから、ここで言っているのは、現状では -L 2 や -L 3 を -I と一緒に使っても、期待する結果は得られない ということだろう。 -- 長南洋一