임베디드 장치에서 Linux 커널의 메모리 분석

임베디드 장치에서 Linux 커널의 메모리 분석

ARM 기반 임베디드 장치에 Linux 커널 2.6.30이 있고 장치에서 커널 메모리 사용량 분석을 수행해야 합니다.

Wi-Fi 켜기/끄기와 같은 작업을 수행하면서 다양한 커널 스레드 및 모듈에서 ps 출력을 모니터링할 생각입니다.

나에게 제안해 주실 수 있나요?

어떤 스레드를 모니터링해야 합니까? 커널 모듈 메모리 사용량을 모니터링하는 방법은 무엇입니까?

답변1

Linux 시스템에서 메모리 사용량을 모니터링하는 방법에는 여러 가지가 있습니다. 일부는 사용 가능하거나 사용 불가능할 수 있습니다.

  1. 어떤 버전을 실행 중인가요?
  2. 커널 구성 방법
  3. 루트 파일 시스템에는 어떤 사용자 공간 도구가 포함되어 있습니까?

Linux는 일반적으로 가상 메모리 시스템이므로 일부 통계는 오해의 소지가 있거나 부정확할 수 있습니다. 각 통계의 의미를 자세히 알아보고 이해하는 것이 중요합니다.

그렇긴 하지만, 나는 일반적으로 총 메모리 사용량에 대한 아이디어를 얻기 위해 vmstat를 실행하여 메모리 사용량을 모니터링합니다.

# vmstat -s
       127168  total memory
        44072  used memory
        33296  active memory
         2164  inactive memory
        83096  free memory
            0  buffer memory
        20468  swap cache
            0  total swap
            0  used swap
            0  free swap
       582750 non-nice user cpu ticks
            0 nice user cpu ticks
       160883 system cpu ticks
      7448748 idle cpu ticks
            0 IO-wait cpu ticks
        16066 IRQ cpu ticks
        18249 softirq cpu ticks
            0 stolen cpu ticks
            0 pages paged in
            0 pages paged out
            0 pages swapped in
            0 pages swapped out
     15079537 interrupts
     28629740 CPU context switches
   1344249586 boot time
        25532 forks

"무료"는 메모리 사용량에 대한 조감도도 제공합니다. 예상치 못한 것을 발견하면 procfs의 파일을 확인하여 의심스러운 프로세스를 찾습니다. 살펴볼 가치가 있는 좋은 문서는 다음과 같습니다.

/proc/PID/맵- 현재 프로세스에 의해 매핑된 모든 메모리를 나열합니다.

/proc/PID/smaps- 상주/공유/더러운 메모리 양에 대한 자세한 정보를 제공합니다... 파일이 길 수 있지만 더 의미 있는 데이터를 생성하기 위해 Python 스크립트를 작성할 수 있습니다.

관련 정보