VPS에서 무엇이 RAM을 소모하고 있나요?

VPS에서 무엇이 RAM을 소모하고 있나요?

나는 top을 실행하고 있으며 502968KB 중 48064KB가 사용되고 16884KB는 여유 공간으로 남아 있는 것을 확인했습니다. 그러나 개별 프로세스를 살펴보면 mysql이 때때로 내 RAM의 9.4%를 소비한다는 것을 알 수 있지만 다른 어떤 프로세스도 소비하지 않는 것 같습니다. 내 RAM을 모두 소모하는 것은 무엇입니까?

다음은 위에서부터 화면 캡처입니다.

top - 20:46:07 up 1 min,  1 user,  load average: 0.18, 0.05, 0.02
Tasks:  81 total,   1 running,  80 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.4 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:    502968 total,   241236 used,   261732 free,    10488 buffers
KiB Swap:   524284 total,        0 used,   524284 free,   106756 cached

PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
1584 dmackey   20   0 20508 1372 1000 R   0.4  0.3   0:00.01 top
1 root      20   0 26664 2456 1340 S   0.0  0.5   0:00.69 init
2 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kthreadd
3 root      20   0     0    0    0 S   0.0  0.0   0:00.01 ksoftirqd/0
4 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kworker/0:0
5 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/0:0H
6 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kworker/u:0
7 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/u:0H
8 root      rt   0     0    0    0 S   0.0  0.0   0:00.00 migration/0
9 root      20   0     0    0    0 S   0.0  0.0   0:00.00 rcu_bh
10 root      20   0     0    0    0 S   0.0  0.0   0:00.24 rcu_sched
11 root      rt   0     0    0    0 S   0.0  0.0   0:00.00 watchdog/0
12 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 cpuset
13 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 khelper
14 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kdevtmpfs
15 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 netns
16 root      20   0     0    0    0 S   0.0  0.0   0:00.00 bdi-default

그리고 여기 무료 중 하나가 있습니다:

            total       used       free     shared    buffers     cached
Mem:        502968     355252     147716          0      10816     111548
-/+ buffers/cache:     232888     270080
Swap:       524284          0     524284

답변1

아무것도 아님.

리눅스이고 그게 다야어떻게 작동하나요?.

활용도가 낮은 리소스를 갖는 것이 무슨 의미가 있습니까? 디스크 캐싱을 위해 "여유" 메모리를 사용합니다.

프로세스가 더 많은 메모리를 원하면 커널에서 이를 요청하고 (일반적으로) 메모리를 얻습니다.

/etc/my.cnf아.. 그리고 MySQL은 인덱스, 쿼리 및 테이블이 디스크에서 메모리로 캐시되어 액세스 시간이 더 빨라지도록 필요한 만큼(에서 구성한 대로) 사용합니다 .

답변2

그것은 마지막으로 사용되었지만 메모리에 남아 있는 정크입니다. 대부분 디스크에서 읽거나 디스크에 쓴 데이터입니다. OS는 다음 세 가지 이유로 메모리를 낭비하기 때문에 메모리를 비워 두지 않습니다.

  1. 메모리가 곧 사용되지 않으면 메모리를 비워도 아무 효과가 없습니다.

  2. 메모리가 곧 사용된다면 메모리를 해제하는 것은 다시 사용해야 하기 때문에 실행 취소해야 하는 작업일 뿐입니다.

  3. 메모리에 있던 정보가 다시 필요한 경우 메모리를 비우면 해당 정보를 메모리 대신 디스크에서 가져와야 하므로 속도가 훨씬 느려집니다.

최신 운영 체제에서는 다른 선택의 여지가 전혀 없는 경우에만 메모리를 비울 수 있습니다. "나중에 사용할 수 있도록 지금 메모리를 비워두고 싶다"고 생각하고 있다면 중지하세요. 나중에 사용하기 위해 메모리를 지금 비울 필요는 없습니다. 여기에는 절충점이 없습니다. 필요할 때까지 메모리를 계속 사용하는 것이 순수한 승리입니다.

답변3

향후 분석을 위해 상단의 출력을 기록하는 것이 질문에 답하는 가장 좋은 방법입니다. 빠른 수정은 없으며 시간이 지남에 따라 관찰된 조사가 필요합니다. 내 메모리를 사용하는 표면을 훑어보기 위해 사용하는 일회성 방법은 이것을 루트의 crontab에 넣는 것입니다.

/bin/bash top -b -n 1 | head > `/var/log/date +%e_%T`

그런 다음 텍스트 조작과 pager-fu를 사용하여 추세를 추적합니다. 이 스택 오버플로 게시물https://stackoverflow.com/questions/7908953/how-to-measure-cpu-usageCPU 통계에 대해 이와 같이 top을 사용하고 top via를 통해 사용자 정의하는 좀 더 포괄적인 예가 있지만 .toprc필요에 맞게 쉽게 조정할 수 있습니다.

관련 정보