top을 사용하면 메모리 데이터가 다음과 같이 개요 영역에 표시됩니다.
KiB Mem : 16092836 total, 143168 free, 11005184 used, 4944484 buff/cache
그런 다음 m(대화형 명령)을 사용하여 메모리 데이터 표시 모드를 전환합니다.
KiB Mem : 88.7/16092836 [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ]
내 질문은: 결과는 어떻게 계산 100*used/total
됩니까 ?68.3856
88.7
답변1
상상할 수 있듯이 그 비율은 100*used/total
.
이 비율은 100*(1-available/total)
혼란스러울 정도로 다릅니다 100*used/total
.
여기서 "사용 가능"은 에 표시된 것과 동일한 의미를 갖습니다 free
.
관련 주제:
참고 도서
행동은참조 매뉴얼에 기록되어 있음.
대기 메모리 표시 모드에서는 다음 요소를 포함하는 두 개의 간단한 요약 줄이 표시됩니다.
a b c GiB Mem : 18.7/15.738 [ ... ] GiB Swap: 0.0/7.999 [ ... ]
여기서: a)는 사용된 비율입니다. b)는 사용 가능한 총량입니다. c) >는 이러한 표현의 두 가지 시각화 중 하나입니다.
실제 메모리의 경우 백분율은 다음을 나타냅니다.모두 마이너스 추정효과가있다상술 한 바와 같이. "Mem" 그래프 자체는 캐시되지 않은 부분으로 구분됩니다.사용된그리고 달리 설명되지 않은 남은 메모리효과가있다. 주제 4b를 참조하십시오. 요약 영역 명령과 "m" 명령은 이 특정 4방향 스위치에 대한 추가 정보를 제공합니다.
소스 코드top
이는 현재 소스 코드를 조사하여 확인할 수 있습니다.
그래프 보기로 전달된 데이터
#ifdef MEMGRAPH_OLD
my_misc = my_qued;
#else
my_misc = MEM_VAL(mem_TOT) - MEM_VAL(mem_AVL) - my_used;
#endif
Graph_mems->total = MEM_VAL(mem_TOT);
Graph_mems->part1 = my_used;
Graph_mems->part2 = my_misc;
차트 보기의 계산
if (these->total > 0)
scale = 100.0 / these->total;
rx.pcnt_one = scale * these->part1;
rx.pcnt_two = scale * these->part2;
if (rx.pcnt_one + rx.pcnt_two > 100.0 || rx.pcnt_two < 0)
rx.pcnt_two = 0;
rx.pcnt_tot = rx.pcnt_one + rx.pcnt_two;
기본 보기로 데이터가 전달됨
prT(bfT(0), mkM(MEM_VAL(mem_TOT))); prT(bfT(1), mkM(MEM_VAL(mem_FRE)));
prT(bfT(2), mkM(MEM_VAL(mem_USE))); prT(bfT(3), mkM(my_qued));
prT(bfT(4), mkM(MEM_VAL(swp_TOT))); prT(bfT(5), mkM(MEM_VAL(swp_FRE)));
prT(bfT(6), mkM(MEM_VAL(swp_USE))); prT(bfT(7), mkM(MEM_VAL(mem_AVL)));
snprintf(row, sizeof(row), N_unq(MEMORY_line1_fmt)
, scT(label), N_txt(WORD_abv_mem_txt), bfT(0), bfT(1), bfT(2), bfT(3));
Msg_row += sum_see(row, mem2UP);
보고 불일치에 관해
- 동일한 시스템 상태에서 일치하는 스냅샷이 촬영되었는지 확인하셨나요? 동시에 인쇄하는 경우 기본 보기에서도 사용되는 메모리는 88.7%에 불과할 수 있습니다.
- 당신의 버전은 무엇입니까
top
? 메모리 창의 현재 동작은 이미3.3.10. - 어떤 플랫폼에서 실행하고 있나요?
그래프에 전달되는 데이터를 변경하는 플래그가 있는 것 같습니다.
추가 정보 및 검토에 따라 수정합니다.