%20%D0%B8%D0%BB%D0%B8%201024%20(%D1%81%D1%82%D0%B0%D1%80%D0%B0%D1%8F%20%D1%88%D0%BA%D0%BE%D0%BB%D0%B0)%20%D0%B1%D0%B0%D0%B9%D1%82%D0%B0%D0%BC%3F.png)
От 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, но я хочу быть уверен. Авторитетная ссылка будет оценена.
Можете смело перефразировать мой вопрос следующим образом:выполнять time
и ulimit
соблюдать рекомендации МЭК или использовать «килобайт/кбайт» в значении кибибайт.
решение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
дополнительно дублируется в источникездесьиздесь.
Кажется, что одна буква — это измерение 1024. ДвецифраСокращения символов соответствуют 1000 единицам СИ.
Так как ulimit
встроен в bash, то обращение к их источнику является окончательным... источником. Я часто каламбурю, но вы можете это заметитьздесьиздесь:
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. Вы можете это увидетьздесьиздесь.
Редактировать: страница руководства units.7
подробно объясняет это, но, судя по всему, она довольно запутанная.UnitsPolicy.
решение2
Нет, килобайт - это 1000. Мы следуемМеждународная система единицпоэтому приставка «кило» относится к 1000, а не к 1024. Любая другая ссылка неверна.
1024 — этоКибибайты(кивотбини капли)
Из ulimit -a:
максимальный размер памяти (кбайт, -м) неограничен
Я считаю это ошибкой. Должно быть явно указано кило или киби, а не килобайты
человеко-время:
M Максимальный размер резидентного набора процесса за время его существования, в килобайтах.
решение3
Акилобайтсоставляет 1000 байт (префикс СИ означает тысячу).кибибайтсоставляет 1024 байта (префикс IEC означает килобинарный).
Это соглашение используется с 1998 года, но я полагаю, что использование этих префиксов не так известно, как следовало бы.
Вот почему жесткий диск емкостью 1 ТБ (терабайт) имеет емкость всего 0,91 ТиБ (тебибайт, согласно данным файловой системы).
Связанная с этим проблема возникает, когда авторы заявляют, что число указано в"кбайт". Поскольку это не официальное заявление, вы не знаете, имеют ли они в виду одно или другое.
Так как ulimit
на странице справки написано:«Значения имеют шаг в 1024 байта», я считаю, что можно с уверенностью предположить, что они на самом деле означаюткибибайтыкогда они пишуткилобайт.
С другой стороны, поскольку man time
явно указано, что значения находятся вкилобайты, то можно было бы предположить, что авторы знают, что такое килобайт, и что они действительно имеют в виду 1000 байт.
Однако в любом случае, чтобы быть на 100% уверенным, что авторы не написали ничего явно неверного, вам следует проверить исходный код или проконсультироваться с автором программы.
Использованная литература: