Co oznaczają pola „buff / cache” i „access mem” u góry?


28

Na wyjściu góry znajdują się dwa pola oznaczone w polach użycia pamięci i wymiany: „buff / cache” i „aver Mem”:

wprowadź opis zdjęcia tutaj

Co oznaczają te dwa pola?

Próbowałem ich w Google, ale w wynikach pojawiają się tylko ogólne artykuły i nie wyjaśniają, co oznaczają te pola.

Odpowiedzi:


31

top's podręcznika nie opisuje pola, ale freenic nie robi:

bufory

Pamięć używana przez bufory jądra ( Buffersin /proc/meminfo)

Pamięć podręczna

Pamięć używana przez pamięć podręczną strony i płyty ( Cachedi SReclaimablew /proc/meminfo)

buff / cache

Suma buforów i pamięci podręcznej

dostępny

Oszacowanie ilości dostępnej pamięci do uruchamiania nowych aplikacji bez zamiany. W przeciwieństwie do danych dostarczanych przez pamięć podręczną lub wolne pola, to pole uwzględnia pamięć podręczną strony, a także, że nie wszystkie płyty pamięci, które można odzyskać, zostaną odzyskane z powodu użycia elementów ( MemAvailablew /proc/meminfo, dostępne w jądrach 3.14, emulowane w jądrach 2.6.27+ , w przeciwnym razie to samo co za darmo)

Zasadniczo „buff / cache” zlicza pamięć używaną na dane znajdujące się na dysku lub powinna wkrótce się tam skończyć, w wyniku czego może być potencjalnie użyteczna (odpowiednia pamięć może zostać udostępniona natychmiast, w przypadku pamięci podręcznej lub dać wystarczającą ilość czasu, w przypadku buforów - te i tak powinny pozostać małe); Opcja „dostępna” mierzy ilość pamięci, którą można przydzielić i wykorzystać bez powodowania większej zamiany ( więcej szczegółów na ten temat można znaleźć w artykule Jak uzyskać przenośną ilość dostępnej pamięci między dystrybucjami? ).


1
Bufory / pamięć podręczna nie są udostępniane z wystarczającą ilością czasu ; są to segmenty pamięci, które są natychmiast dostępne, jeśli jakikolwiek program wymaga przydzielenia pamięci. Zobacz także linuxatemyram.com
DopeGhoti,

4

Wystarczy, aby wyjaśnić nieco, bufory odnosi się do danych, które jest napisane - że pamięć nie może zostać odzyskane, dopóki zapis jest kompletny.

Pamięć podręczna odnosi się do danych, które zostały odczytane - są przechowywane na wypadek, gdyby trzeba je ponownie odczytać, ale można je natychmiast odzyskać, ponieważ zawsze można je ponownie odczytać z dysku.


To nie tak naprawdę oznacza to tutaj. /proc/meminfoma pole Writebackspecjalnie. Istnieje osobne pole Buffersi to jest pokazane jak buffersw free -w. BuffersPokazano tutaj częsty powód użycia pamięci: „ 30% pamięci RAM to„ bufory ”. Co to jest?
sourcejedi

Z tego ( access.redhat.com/solutions/406773 ) zakładam , że zapis zwrotny jest tą częścią buforów, która nie została jeszcze zapisana na dysk. A może mówisz coś jeszcze?
WallStProg

Ten opis byłby mylący. Buffersjest (teraz) częścią pamięci podręcznej strony; nie jest liczony Cached, ale jest liczony jako część Active(file) + Inactive(file). Zobacz komentarze do odpowiedzi Stephena Kitta. Dirtyto część pamięci podręcznej strony, na której została zapisana, więc w końcu wymaga ponownego zapisania na dysk. Writebacknie obejmujeDirty . Dlatego Writebacknie jest częścią wartości Buffers.
sourcejedi

Co Bufferstak naprawdę oznacza pamięć podręczną strony powiązaną z urządzeniem blokowym. Niektóre systemy plików używają tego wewnętrznie; inni w ogóle go nie używają. / idzie naprawić moją odpowiedź na pytanie „30% mojej pamięci RAM to bufory”.
sourcejedi

2

Kanonicznym źródłem tych informacji jest /usr/src/linux/Documentation/filesystems/proc.txt

Bufory : Względnie tymczasowe miejsce do przechowywania surowych bloków dysku nie powinno być bardzo duże (około 20 MB) Buforowane : pamięć podręczna dla plików odczytywanych z dysku (pamięć podręczna strony). Nie obejmuje SwapCached.

Więcej szczegółów znajdziesz tutaj .

Pamięć podręczna stron systemu Linux („ Cached :” z meminfo) jest największym pojedynczym konsumentem pamięci RAM w większości systemów. Za każdym razem, gdy wykonujesz odczyt () z pliku na dysku, dane są wczytywane do pamięci i przechodzą do pamięci podręcznej strony (1.).
Pamięć podręczna buforów („ Buffers :” w meminfo) jest zbliżona do pamięci podręcznej dentry / inode.

Lub przeanalizuj kod źródłowy w ten sposób .

Kwota buffersjest wartością zwracaną przez funkcjęnr_blockdev_pages(void)

long nr_blockdev_pages(void)
{
        struct block_device *bdev;
        long ret = 0;
        spin_lock(&bdev_lock);
        list_for_each_entry(bdev, &all_bdevs, bd_list) {
                ret += bdev->bd_inode->i_mapping->nrpages;
        }
        spin_unlock(&bdev_lock);
        return ret;
}

Ilość cached:

global_page_state(NR_FILE_PAGES) – total_swapcache_pages – i.bufferram
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.