Dla mnie nie jest jasne, jaka jest różnica między dwiema koncepcjami pamięci Linuksa: buffer
i cache
. Przeczytałem ten post i wydaje mi się, że różnica między nimi polega na polityce wygasania:
- zasady bufora są pierwszeństwo, pierwszeństwo
- Polityka pamięci podręcznej jest ostatnio używana.
Czy mam rację?
W szczególności patrzę na dwa polecenia: free
ivmstat
james@utopia:~$ vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
5 0 0 173 67 912 0 0 19 59 75 1087 24 4 71 1
james@utopia:~$ free -m
total used free shared buffers cached
Mem: 2007 1834 172 0 67 914
-/+ buffers/cache: 853 1153
Swap: 2859 0 2859
free
polecenia?Odpowiedzi:
„Bufory” reprezentują część pamięci RAM przeznaczoną na bloki pamięci podręcznej. „Buforowany” jest podobny do „Buforów”, tylko tym razem buforuje strony z odczytu plików.
Cytat z:
źródło
cache
wypełnia się zgodnie z raportemfree -w -h
, a niebuffers
kolumną. Myślę, żecache
kolumna zlicza zarówno zapisy, jak i odczyty dysku ibuffers
jest używana do czegoś innego.cytat link
źródło
Cytowana odpowiedź (w celach informacyjnych):
źródło
To nie jest „tak proste” jak to, ale może pomóc zrozumieć:
Bufor służy do przechowywania metadanych plików (uprawnień, lokalizacji itp.). Tutaj śledzona jest każda strona pamięci.
Pamięć podręczna służy do przechowywania rzeczywistej zawartości pliku.
źródło
Wyjaśnione przez RedHat :
Strony pamięci podręcznej:
Pamięć podręczna to część pamięci, która w przejrzysty sposób przechowuje dane, aby przyszłe żądania dotyczące tych danych mogły być szybciej obsługiwane. Jądro wykorzystuje tę pamięć do buforowania danych na dysku i poprawy wydajności we / wy.
Jądro Linux jest zbudowane w taki sposób, że zużywa tyle pamięci RAM, ile jest w stanie buforować informacje z lokalnych i zdalnych systemów plików i dysków. W miarę upływu czasu w systemie wykonywane są różne odczyty i zapisy, jądro próbuje zachować dane przechowywane w pamięci dla różnych procesów działających w systemie lub dane odpowiednich procesów, które zostaną wykorzystane w najbliższej przyszłości. Pamięć podręczna nie jest odzyskiwana w momencie zatrzymania / wyjścia procesu, jednak gdy inne procesy wymagają więcej pamięci niż wolnej dostępnej pamięci, jądro uruchomi heurystykę w celu odzyskania pamięci poprzez zapisanie danych w pamięci podręcznej i przydzielenie tej pamięci do nowego procesu.
Kiedy żądany jest jakikolwiek plik / dane, jądro szuka kopii części pliku, na której działa użytkownik, a jeśli taka kopia nie istnieje, przydzieli jedną nową stronę pamięci podręcznej i wypełni ją odpowiednia zawartość odczytana z dysku.
Dane przechowywane w pamięci podręcznej mogą być wartościami obliczonymi wcześniej lub duplikatami oryginalnych wartości przechowywanych w innym miejscu na dysku. Gdy wymagane są niektóre dane, pamięć podręczna jest najpierw sprawdzana, aby sprawdzić, czy zawiera te dane. Dane można odzyskać szybciej z pamięci podręcznej niż z ich źródła źródłowego.
Segmenty pamięci wspólnej SysV są również rozliczane jako pamięć podręczna, chociaż nie reprezentują żadnych danych na dyskach. Rozmiar segmentów pamięci współużytkowanej można sprawdzić za pomocą polecenia ipcs -m i sprawdzenia kolumny bajtów.
Bufory:
Bufory to reprezentacja bloków dyskowych danych przechowywanych w pamięci podręcznej stron. Bufory zawierają metadane plików / danych znajdujących się pod pamięcią podręczną strony. Przykład: Gdy pojawi się żądanie danych znajdujących się w pamięci podręcznej strony, najpierw jądro sprawdza dane w buforach zawierających metadane wskazujące na rzeczywiste pliki / dane zawarte w pamięci podręcznej stron. Gdy z metadanych znany jest rzeczywisty adres bloku pliku, jest on pobierany przez jądro w celu przetworzenia.
źródło
bufor i pamięć podręczna.
Bufor to coś, co nie zostało jeszcze „zapisane” na dysk.
Pamięć podręczna to coś, co zostało „odczytane” z dysku i zapisane do późniejszego wykorzystania.
źródło
Myślę, że ta strona pomoże głęboko zrozumieć różnicę między buforem a pamięcią podręczną. http://www.tldp.org/LDP/sag/html/buffer-cache.html
Odczytywanie z dysku jest bardzo wolne w porównaniu z dostępem do (rzeczywistej) pamięci. Ponadto często odczytuje się tę samą część dysku kilka razy w stosunkowo krótkim czasie. Na przykład można najpierw przeczytać wiadomość e-mail, a następnie w odpowiedzi odpowiedzieć na list w edytorze, a następnie zmusić program pocztowy do przeczytania go ponownie podczas kopiowania do folderu. Lub zastanów się, jak często polecenie
ls
może być uruchamiane w systemie z wieloma użytkownikami. Czytając informacje z dysku tylko raz, a następnie przechowując je w pamięci, aż nie będą już potrzebne, można przyspieszyć wszystko oprócz pierwszego odczytu. Nazywa się to buforowaniem dysku, a pamięć używana do tego celu nazywana jest pamięcią podręczną bufora.Ponieważ pamięć jest niestety skończonym, nie tak rzadkim zasobem, pamięć podręczna bufora zwykle nie może być wystarczająco duża (nie może pomieścić wszystkich danych, które kiedykolwiek chce się wykorzystać). Gdy pamięć podręczna się zapełnia, dane, które były nieużywane przez najdłuższy czas, są odrzucane, a zwolniona pamięć jest wykorzystywana na nowe dane.
Buforowanie dysku działa również w przypadku zapisów. Z jednej strony zapisywane dane są często wkrótce ponownie odczytywane (np. Plik kodu źródłowego jest zapisywany w pliku, a następnie odczytywany przez kompilator), więc umieszczenie danych zapisanych w pamięci podręcznej jest dobrym pomysłem. Z drugiej strony, zapisując dane do pamięci podręcznej, a nie zapisując je jednocześnie na dysk, program, który zapisuje, działa szybciej. Zapisy można następnie wykonywać w tle, bez spowalniania innych programów.
źródło
Link 2 Setha Robertsona powiedział: „Aby dokładnie zrozumieć te terminy, zapoznaj się z książką jądra systemu Linux, taką jak Linux Kernel Development autorstwa Roberta M. Love”.
W drugim wydaniu książki znalazłem trochę informacji o „buforze”.
źródło
Bufor zawiera metadane, które pomagają poprawić wydajność zapisu
Pamięć podręczna zawiera samą zawartość pliku (czasami jeszcze do zapisania na dysku), co poprawia wydajność odczytu
źródło
Cytat z książki: Wprowadzenie do wyszukiwania informacji
Pamięć podręczna
Bufor
źródło
Bufor to obszar pamięci służący do tymczasowego przechowywania danych podczas przenoszenia z jednego miejsca do drugiego w komputerze. Podczas gdy pamięć podręczna jest tymczasowym obszarem przechowywania, w którym często przechowywane dane mogą być przechowywane w celu szybkiego dostępu. Po zapisaniu danych w pamięci podręcznej można w przyszłości wykorzystać dostęp do pamięci podręcznej zamiast ponownego pobierania oryginalnych danych, dzięki czemu średni czas dostępu jest krótszy.
źródło