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 と推測しますが、確認したいです。信頼できる参考文献があれば幸いです。

私の質問を次のように言い換えてください。IEC勧告に従って行うtimeulimit、キビバイトの意味で「キロバイト/キロバイト」を使用する

答え1

パーman dir.1:

The SIZE argument is an integer and optional unit (example: 10K is 10*1024). Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000).

パーinfo ls:

‘-h’
‘--human-readable’
Append a size letter to each size, such as ‘M’ for mebibytes. Powers of 1024 are used, not 1000; ‘M’ stands for 1,048,576 bytes. This option is equivalent to --block-size=human-readable. Use the --si option if you prefer powers of 1000.

の出力はlsソースにさらにバックアップされますここそしてここ

1文字は1024の測定値であるように見えます。2つの文字の略語は SI 単位の 1000 です。

bashに組み込まれているのでulimit、ソースにアクセスするのが決定的なソースです。私はよくしゃれを言いますが、ここそしてここ:

Values are in 1024-byte increments, except for -t, which is in seconds,
-p, which is in increments of 512 bytes, and -u, which is an unscaled
number of processes.

おそらくあなたのバージョンはbash-5.2-rc3より古いでしょうが、それは問題ありません。そのアイテムのサイズは4.0.38がリリースされてから少なくとも10年間変わっていません。ここそしてここ

編集:のマニュアルページではunits.7これを詳しく説明していますが、ユニットポリシー

答え2

いいえ、キロバイトは1000です。国際単位系したがって、接頭辞「キロ」は 1024 ではなく 1000 を指します。その他の参照は誤りです。

1024はキビバイト見よナリー

ulimit -a から:

最大メモリサイズ (キロバイト、-m) 無制限

これはバグだと思います。キロバイトではなくキロかキビを明示的に示すべきです。

男の時間:

M プロセスの存続期間中の最大常駐セット サイズ (キロバイト単位)。

  • 制限KIBIbytesを使用

    limit.rlim_cur = newlimit * 512;
    limit.rlim_max = newlimit * 512;
    
  • GNUタイムソースを見ると、KIBIbytes が使用されています。マニュアルは間違っています。

    それは使用しています:

    tmp = pages / 1024;  /* Smaller first, */
    size = tmp / 1024;    /* then smaller.  */
    

答え3

キロバイト1000バイト(SI接頭辞は千を意味する)である。キビバイト1024 バイト (キロバイナリを意味する IEC プレフィックス)。

この規則は 1998 年から使用されていますが、これらの接頭辞の使用法は十分に知られていないようです。

これは、1 TB (テラバイト) のハードディスクが、ファイルシステムによって報告される 0.91 TiB (テビバイト) しかない理由でもあります。

関連する問題として、著者が数値が「キロバイト」これは公式の宣言ではないので、どちらを意味しているのかわからない。

ヘルプページには次のようにulimit書かれています:「値は1024バイト単位で増加します」、私は彼らが実際に意味していると仮定しても安全だと思いますキビバイト彼らが書くときキロバイト

一方、はman time明示的に値がキロバイト、著者はキロバイトが何であるかを知っており、実際に 1000 バイトを意味していると仮定する必要があります。

ただし、いずれにしても、作者が明らかに間違ったことを書いていないことを 100% 確実にするには、ソースコードを確認するか、プログラムの作成者に相談する必要があります。

参考文献:

関連情報