에서 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
.
독립형 GNU time
유틸리티(많은 쉘에는 자체 time
키워드가 있음)Darwin/macOS와 다른 시스템 간의 다양한 단위 이해.