나는 top
명령을 호출했고 이것을 얻었습니다 :
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3433 klutt 20 0 4790760 1.0g 282208 S 8.3 4.2 1261:15 firefox-esr
2063 klutt 9 -11 3424532 33644 24432 S 7.0 0.1 432:44.69 pulseaudio
3681 klutt 20 0 3958364 545000 139800 S 6.6 2.2 434:35.72 Web Content
Firefox와 웹 콘텐츠가 많은 메모리를 차지한다는 것을 알고 있지만 pulseaudio는 어떻습니까? 3GB 이상을 사용하는 것이 정상인가요? 이것은 버그입니까?
$ uname -a
Linux desktop 5.7.0-1-amd64 #1 SMP Debian 5.7.6-1 (2020-06-24) x86_64 GNU/Linux
$ pulseaudio --version
pulseaudio 13.0
$ cat /etc/debian_version
bullseye/sid
답변1
귀하의 예에서는 pulseaudio
3GB 대신 32MB가 사용되었습니다. 이 RES
열은 실제 메모리입니다. 이 VIRT
열에는 프로세스에서 사용하는 모든 가상 메모리가 표시됩니다. 에 따르면 man top
여기에는 모든 코드, 데이터 및 공유 라이브러리는 물론 교체된 페이지와 매핑되었지만 사용되지 않은 페이지가 포함됩니다.
답변2
다음 명령을 사용하면 가상 메모리 사용량에 대한 자세한 내용을 볼 수 있습니다.지도도구:
pmap $(pidof pulseaudio) | sort -hk 2
00005590f6f0a000 4K r---- pulseaudio
00005590f6f0b000 4K rw--- pulseaudio
00007f50ea53f000 4K r---- libicudata.so.66.1
00007f50ea540000 4K r-x-- libicudata.so.66.1
....
00007f50e0000000 65536K rw-s- memfd:pulseaudio (deleted)
00007f50f314b000 65536K rw-s- memfd:pulseaudio (deleted)
total 1679768K
나에게 있어서 사용되는 메모리의 대부분은 64MB memfd
버퍼이다. memfd
오디오 데이터를 펄스 오디오로 전송하기 위해 애플리케이션에서 사용하는 프로세스 간 통신 방법입니다.
버퍼의 가상 메모리는 각 애플리케이션에 할당되지만 실제 메모리는 현재 전송되는 데이터 양만큼만 사용됩니다. 애플리케이션이 오디오 샘플을 버퍼에 기록하면 이를 위해 메모리가 할당됩니다. pulseaudio가 샘플을 믹싱하고 재생하면 메모리가 다시 해제됩니다.
답변3
다른 사람들이 대답했듯이 가상 메모리 크기는 RAM 소비에 중요하지 않습니다. 다른 이유로 여전히 원하는 경우가상 메모리 크기 줄이기pulseaudio 및 해당 클라이언트 프로세스:
pulseaudio 데몬 구성(아마도 /etc/pulse/daemon.conf
)을 찾아 주석 처리를 제거하고 enable-shm
다음과 같이 설정을 변경합니다.
enable-shm = no
그런 다음 컴퓨터를 다시 시작하거나 pulseaudio를 다시 시작하세요.
systemctl --user restart pulseaudio
이렇게 하면 실제 메모리가 절약되지 않고 눈에 띄지 않는 성능 오버헤드가 발생하지만 가상 메모리 사용량이 줄어들어 마음의 평화를 얻을 수 있습니다!