내 기억을 사용하는 것은 무엇입니까?

내 기억을 사용하는 것은 무엇입니까?

내 Linux(ubuntu 20.04) 서버에서 무엇이 메모리를 사용하고 있는지 알아내려고 합니다.

재부팅 후 잠시 후 htop에 다음이 표시됩니다.

htop

이는 현재 17GB의 메모리가 사용 중임을 나타냅니다. 재부팅하기 전에는 29.6GB로 표시되고 컴퓨터가 느려지는 것 같았습니다. htop 창은 메모리별로 정렬되어 있으며 가장 많이 사용하는 프로세스는 0.6%의 메모리를 사용하고 있습니다.

다른 질문다음 명령을 사용하는 것이 좋습니다.

ps -e -orss=,args= | sort -b -k1,1n

가장 많이 사용하는 프로세스는 209596킬로바이트(?)의 메모리를 보고하므로 다시 사용 가능한 RAM의 작은 부분입니다.

ps나는 해당 명령 에 의해 보고된 첫 번째 열의 모든 숫자를 더하기 위해 다소 비밀스러운 명령을 시도했습니다 .

ps -e -orss=,args= | sort -b -k1,1n | sed 's/^ \+//' | cut -d \  -f 1 | sed '2,$s/$/+/' | sed '$s/$/p/' | dc

총 사용량은 2965816킬로바이트(?)로 보고되는데, 이는 (킬로바이트 가정이 정확하다고 가정할 때) 3GB 미만이므로 나머지 14GB는 어디로 갈까요?

누구든지 도와주실 수 있나요?

답변1

예. 그게 나에게 문제를 일으키는 걸까요?

문제가 발생하지 않습니다. 이는 예상된 동작입니다. ZFS는 원래 Linux용으로 제작되지 않았습니다. 자체 캐싱 시스템(ARC, 적응형 대체 캐시라고 함)이 있습니다. Linux에서 이 캐시에 할당된 메모리는 일반 파일 시스템 캐싱과 마찬가지로 메모리 압력이 증가하면 해제되더라도 "사용 중"으로 표시됩니다. 기본 최대 ARC 크기는 실제 메모리의 50%입니다.

(3+) 의 최신 버전에서는 htopARC 상태 표시를 켤 수 있습니다.

htop 3 zfs 상태

이 스크린샷은 8GiB 메모리를 갖춘 시스템의 스크린샷입니다.

답변2

ZFS에는 일반 Linux 디스크 캐시와 별개인 RAM 기반 디스크 캐시가 있습니다. 이는 ZFS의 Linux 이외의 출처와 관련이 있습니다. 이 ZFS 메모리 캐시를 적응형 교체 캐시(ARC)라고 합니다. 이러한 분리로 인해 ZFS ARC는 EXT4와 같은 기본 파일 시스템에서 예상하는 것처럼 Linux에서 '캐시된' 메모리가 아닌 '사용된' 메모리로 표시됩니다. 이것이 ZFS를 처음 접하는 많은 사람들이 RAM 사용량에 대해 걱정하는 이유이지만 걱정할 것은 없습니다. 중복 제거를 다루지 않는 한(아마도 다루지 않을 것이고 아마도 하지 말아야 할) 메모리는 많은 사람들이 말하는 것과는 달리 ZFS의 큰 관심사가 아닙니다.

많은 양의 데이터를 이동(읽는 것을 의미)하기 때문에 이 디스크 캐시(및 메모리)가 가득 차는 것을 볼 수 있습니다. ARC의 기본 메모리 제한은 일반적으로 RAM의 50%이지만 최대값을 설정하려는 경우 zfs 커널 모듈 매개변수 'zfs_arc_max'를 통해 구성할 수 있습니다. 여유 메모리가 부족해지면 ZFS는 Linux의 일반 디스크 캐시와 마찬가지로 일부 ARC를 릴리스합니다. 다시 말하지만, 걱정할 것이 없습니다. 사용하지 않는 RAM은 낭비되는 RAM입니다.

--HenkAchterpaard

관련 정보