ipcs -lm과 cat /sys/proc/kernel/xxxx의 차이점은 무엇입니까?

ipcs -lm과 cat /sys/proc/kernel/xxxx의 차이점은 무엇입니까?

나는 노력했다

ipcs -lm

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 67108864
max total shared memory (kbytes) = 34359738368
min seg size (bytes) = 1

그리고

cat /proc/sys/kernel/shmmni
4096
cat /proc/sys/kernel/shmmax
68719476736
cat /proc/sys/kernel/shmall
8589934592

내가 읽은 문서에서 나는 그들이 동일한 값을 설명하고 있지만 서로 다르다는 것을 이해했습니다. 그들 사이의 차이점이 무엇인지 설명해 주시겠습니까?

건배

답변1

Linux에서 ipcs는 /proc. 실패한 경우에만 shmctl(). 그리고 # define SHMMIN 1에 없는 것처럼 보이는 것이 있습니다 /proc.

  • /proc/sys/kernel/shmall단위는 페이지이고 ipcs는 max total shared memoryKB로 변환됩니다.
  • /proc/sys/kernel/shmmax단위는 바이트이고 ipcs는 max seg sizeKB로 변환됩니다.

소스 코드는 util-linux 패키지이며 그 중 하나는 다음 위치에 있습니다. https://github.com/karelzak/util-linux/blob/stable/v2.33/sys-utils/ipcs.c
do_shm()은 페이지 크기 단위 변환을 수행합니다.

uint64_t tmp, pgsz = getpagesize();

tmp = (uint64_t) lim.shmall * pgsz;

(최대 총 공유 메모리 / shmall = 페이지 크기이기 때문에 시스템에 4KB 페이지가 있음을 알 수 있습니다. 이는 매우 일반적입니다.)

관련 정보