からman time
:
M Maximum resident set size of the process during its lifetime, in Kilobytes.
からulimit -a
:
max memory size (kbytes, -m) unlimited
しかし、一つ「キーバイト」とは、1000バイトまたは1024バイトを意味できます。。おそらく1024ラウンドのようですが、確実に確認したいと思います。権威ある参考資料をいただきありがとうございます。
答え1
キロバイト(1024)で、これはgetrusage()
/ setrlimit()
APIへのネイティブインターフェースです。文書が不正確です(または古いと言います)。
さらに、リソース制限/計算とその単位はシステムによって異なり、一部のシステムでシェルのバグが発生する(文書化されていない)ものを見つけることはまれではありません。一部のシェルではこれを受け入れるか、BSD cshの元の実装と互換性があるように追加の拡張を実行しますが、それに関係なくサポートされているKMGTPEサフィックスは常に1000ではなく1024に基づいています。
私が持っていると思います。提案されたzshパッチこの仕事とそれ以上に対処するには、達成すべきことがたくさんあります。
あなたは見るでしょうそこにコードを入力してください各リソースの単位を明確に指定します。
typedef struct resinfo_T {
int res; /* RLIMIT_XXX */
char* name; /* used by limit builtin */
enum zlimtype type;
int unit; /* 1, 512, or 1024 */
char opt; /* option character */
char* descr; /* used by ulimit builtin */
} resinfo_T;
[...]
{RLIMIT_RSS, "resident", ZLIMTYPE_MEMORY, 1024,
'm', "resident set size (kbytes)"},
RSS制限用。
また注Darwin / macosを除く%M
すべてのシステムでzshキーワードの単位が正しくありません。time
。
スタンドアロンGNUtime
ユーティリティ(多くのシェルには独自のtime
キーワードがあります)Darwin/macOSと他のシステム間のさまざまなユニットの理解。