VIRT, RSS, PSS는 서로 다른 값입니다
ps -o pid,vsz,rss,comm -p "$$"
cat /proc/$$/smaps_rollup
getconf PAGESIZEVIRT/VSZ는 가상 주소 공간, RSS는 실제 메모리에 있는 페이지의 양을 보는 지표입니다. 여러 프로세스가 같은 페이지를 공유하면 RSS를 더할 때 중복 집계할 수 있습니다. PSS는 공유된 페이지의 비용을 나누어 계산합니다. 접근 권한과 커널 설정에 따라 smaps_rollup을 읽지 못할 수 있습니다.
VIRT가 크다고 모두 물리 메모리를 쓴 것은 아니지만 주소 공간 제한이나 commit 정책과 무관한 값도 아닙니다. 페이지 크기는 getconf PAGESIZE 또는 sysconf(_SC_PAGESIZE)로 확인합니다. 서로 다른 시점의 Mapped와 nr_mapped를 나누어 추정하면 단위·시점 때문에 틀릴 수 있습니다.
thermal_zone0이 항상 CPU 온도는 아닙니다
for zone in /sys/class/thermal/thermal_zone*; do
[ -r "$zone/type" ] && [ -r "$zone/temp" ] || continue
printf '%s: ' "$zone"
cat "$zone/type" "$zone/temp"
done각 zone의 type을 먼저 읽습니다. thermal temp의 단위는 보통 밀리섭씨도이므로 42000은 42°C에 해당합니다. 어떤 부품의 측정값인지는 드라이버와 하드웨어 설명을 확인해야 합니다. hwmon의 temp 입력과 thermal zone은 관련이 있을 수 있지만 같은 경로 체계는 아닙니다.
- 대상CPU, 보드, 센서 중 무엇을 측정하는지 확인합니다.
- 단위바이트·페이지·밀리섭씨도·kHz를 구분합니다.
- 시점순간값·누적값·구간 평균을 구분합니다.
각 상자는 해석에 필요한 정보입니다. 숫자만 같아도 세 항목이 다르면 같은 현상이 아닙니다.
governor 이름만으로 고정 주파수를 단정하지 않습니다
for policy in /sys/devices/system/cpu/cpufreq/policy*; do
[ -d "$policy" ] || continue
printf '%s\n' "$policy"
cat "$policy/scaling_driver" "$policy/scaling_governor"
done정책에 연결된 CPU와 scaling driver를 함께 봅니다. powersave의 의미는 드라이버와 동작 모드에 따라 다르며 언제나 최저 주파수 고정이라는 뜻은 아닙니다. cpufreq 경로가 없는 가상 환경도 있습니다. 무한 부하 루프를 남긴 채 측정하면 다른 결과까지 바뀌므로 부하 발생과 종료를 한 실험으로 관리합니다.
NUMA miss와 foreign의 방향을 구분합니다
| 항목 | 이 노드를 기준으로 한 뜻 |
|---|---|
| numa_hit | 이 노드를 원했고 이 노드에 할당되었습니다. |
| numa_miss | 다른 노드를 원했으나 이 노드에 할당되었습니다. |
| numa_foreign | 이 노드를 원했으나 다른 노드에 할당되었습니다. |
| local_node / other_node | 할당을 요청한 CPU가 이 노드에 속하는지에 따른 통계입니다. |
누적 할당 통계이며 페이지 접근 지연을 직접 측정한 값은 아닙니다. NUMA 정책과 CPU 배치가 바뀌면 의미도 달라집니다. 한 번의 절댓값보다 같은 구간의 증분과 워크로드를 함께 봅니다.