timeおよびulimitコマンドで使用されるキロバイトは1000(SI)バイトですか、それとも1024(古い)バイトですか?

timeおよびulimitコマンドで使用されるキロバイトは1000(SI)バイトですか、それとも1024(古い)バイトですか?

から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と他のシステム間のさまざまなユニットの理解

関連情報