vm.overcommit_memory와 Process Status 및 Priority

1. vm.overcommit_memory

커널이 메모리 할당 요청을 처리하는 방식을 결정하는 파라미터.

오버커밋 = 실제 물리 메모리보다 많은 메모리 요청을 일단 허용하고, 실제로 쓸 때 물리 메모리를 할당하는 방식

값 이름 동작

0휴리스틱 (기본값)커널이 알아서 판단
1무조건 허용모든 요청 허용, OOM 위험
2엄격한 제한한도 초과 시 즉시 거절

오버커밋이 필요한 이유: fork() 시 부모 메모리를 복사하지만, exec() 후엔 대부분 쓰지 않음 → 오버커밋 없으면 메모리 낭비가 극심해짐


2. 프로세스 상태 코드

ps aux / top의 STAT 컬럼에 표시

코드 이름 설명

RRunningCPU 실행 중 또는 대기 중
SSleeping이벤트 대기 (깨울 수 있음)
DDisk SleepIO 완료 대기 (kill도 안 통함)
ZZombie종료됐지만 부모가 수거 안 함
TStoppedCtrl+Z 등으로 일시 정지

좀비 프로세스 발생 원인

자식 종료 → 부모가 wait()를 호출하지 않음 → Z 상태
  • 메모리는 차지 안 하지만 PID를 점유 → 대량 발생 시 PID 고갈 위험
  • 부모가 먼저 죽는 경우는 → 고아 프로세스 → init이 입양 후 수거 (좀비 아님)

3. PR / NI — 프로세스 우선순위

NI (Nice 값) — 내가 설정하는 값

  • 범위: -20 ~ +19
  • 낮을수록 높은 우선순위 (CPU를 많이 가져감)
  • 높을수록 낮은 우선순위 (다른 프로세스에게 양보)
  • "나이스할수록 손해본다" 

PR (Priority) — 커널이 실제 사용하는 값

PR = 20 + NI
  • rt 표시 → 실시간 프로세스 (일반 프로세스보다 항상 우선)

우선순위가 의미 없을 때

CPU 코어 수 = 실행 중인 프로세스 수 → 경합 없음 → NI값 무의미

우선순위는 경쟁이 있을 때만 효과가 있다.

# 낮은 우선순위로 실행 (백그라운드 작업에 유용)
nice -n 19 ./backup.sh

# 실행 중인 프로세스 우선순위 변경
renice -n 5 -p [PID]

Read more

mybloodyvalentine 3집 loveless

마이블러디발렌타인의 정규 2집 loveless 엘피를 김밥레코즈에서 5만원가량의 금액으로 구매. 요건 평생 들어도 질리지않을거같아 바이닐로 구매했다. 물리적인 이슈가 발생하지않는 한 이제 스트리밍 플랫폼의 의존성없이 평생 청취 가능하다 내부 크레딧 개인적으로 빌린다 부처의 맥아리없는 보컬을 참 좋아한다. 바이닐 커버를 벗기면 평범하다 0:00 /0:12 1× 2집 loveless만큼 3집 mbv도 좋아해서 아마

By 권동혁