14.04에서 16.04로`free` 출력의 변화는 무엇을 의미합니까?


29

free명령보고가 Trusty와 Xenial 사이에서 변경된 것으로 나타났습니다 . 내 Trusty 컴퓨터 중 하나에`free -m '이 표시됩니다.

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7916       7645        271         99        455       1764
-/+ buffers/cache:       5426       2490
Swap:        24999        805      24194

다음은 (다른) Xenial 시스템과 동일합니다.

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3553        1192         857          16        1504        2277
Swap:          3689           0        3689

내가 주로 사용했던 +/- buffers / cache 라인은 사라졌습니다. 새로운 숫자를 어떻게 해석해야합니까?

  • Mem 사용 / 무료에 버퍼 및 캐시가 포함됩니까?
  • 이전 버전의 "+/- buffers / cache"줄에서 사용 된 숫자와 사용 가능한 숫자에 해당하는 숫자는 무엇입니까?

답변:


16

free내 명령에서 얻은 샘플 출력을 고려하십시오 Ubuntu 12.04.

           total       used       free     shared    buffers     cached
Mem:       8074640    6187480    1887160     377056     365128    2113156
-/+ buffers/cache:    3709196    4365444
Swap:     15998972      82120   15916852

의 Memused (kb_main_used) 필드 값은 이제 다음과 같이 계산된다 :

used = total - free - cached - buffers

이전에는 다음과 같습니다.

used = total - free

이 변경 사항은 다음 커밋 https://gitlab.com/procps-ng/procps/commit/6cb75efef85f735b72e6c96f197f358f511f8ed9 에서 도입되었습니다.

중간 값 :

buffers_plus_cached = buffers (kb_main_buffers) + cached (kb_main_cached) = 365128 + 2113156 = 2478284

+/- 버퍼 / 캐시 값은 다음과 같이 계산됩니다.

buffers = kb_main_used - buffers_plus_cached = 6187480 - 2478284 = 3709196
/
cache = kb_main_free + buffers_plus_cached = 1887160 + 2478284 = 4365444

새로운 버프 / 캐시 값은 다음과 같이 계산됩니다.

buff/cache = kb_main_buffers+kb_main_cached = 365128 + 2113156 = 2478284

이것은 buffers_plus_cached이전 버전에서 사용 된 과 동일하지만 차이점은 이전에 내부적으로 사용되었으며 이제 직접 표시되고 추가 계산 된 줄 -/+ buffers/cache이 제거되었다는 것입니다.

더 많은 정보를 원하시면,이 변화가 소개 된 이러한 커밋을 확인하십시오 : https://gitlab.com/procps-ng/procps/commit/f47001c9e91a1e9b12db4497051a212cf49a87b1 https://gitlab.com/procps-ng/procps/commit/c9908b59712d1afd6b9bf7971ba1d8900ae5adb8

available필드에서 2.6.27 이전의 Linux 커널의 경우 값이 값과 동일 free하지만 이후 버전의 커널의 경우 약간 다릅니다.

Estimation of how much memory  is  available  for  starting  new
applications,  without swapping. Unlike the data provided by the
cache or free fields, this field takes into account  page  cache
and also that not all reclaimable memory slabs will be reclaimed
due to  items  being  in  use  (MemAvailable  in  /proc/meminfo,
available   on   kernels  3.14,  emulated  on  kernels  2.6.27+,
otherwise the same as free)

예의 : http://manpages.ubuntu.com/manpages/xenial/en/man1/free.1.html

따라서 귀하의 질문에 대한 구체적인 답변은 다음과 같습니다.

  • 새 버전의 free포함 버퍼 / 캐시 Mem used/free값 계산 .
  • +/- buffers/cache의 이전 버전이있을하는 데 사용되는 값 free으로 사용할 수 있습니다 :
    • -/ + buffers / cacheused = 현재 Mem used열 (그 계산은 위에 자세히 설명되어 있습니다)
    • -/ + 버퍼 / 캐시free 는 현재 새 열에서보다 정확한 값으로 사용 가능available

NB :kb_* 변수 이름은 소스 코드에서 사용되는 내부 명칭이다.


1
이 답변은 상단에 구체적인 답변 = "tl; dr 부분"과 아래 세부 정보를 넣어서 개선 할 수 있습니다 (지금은 그 반대입니다).
Nikana Reklawyks

이 좋은 설명하지만 오픈 VZ에 우분투에게 내가 그 "가능"도 가까이에 오지 오지 않는다 참조 16.04 실행 무료 이전 "무료"의 "+/- 버퍼 / 캐시 '에 열을. 동일한 응용 프로그램을 실행하면 14.04에서 120MB 무료가 제공되며 16.04에서 0에 가깝습니다. 램 사용법은 두 시스템에서 완전히 다르거 나 무료 패키지가 잘못되었습니다 (또는 OpenVZ가 이러한 것들에 대한 혼란입니다).
Sandro Antonucci
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.