Jak i dlaczego opcja noatime poprawia wydajność systemów Linux

Aktualizacja Atime wpływa na wydajność systemu. Co się tam dzieje i co z tym zrobić - przeczytaj artykuł.

Jak i dlaczego opcja noatime poprawia wydajność systemów Linux
Ilekroć aktualizuję Linuksa na moim komputerze domowym, muszę rozwiązać pewne problemy. Z biegiem lat stało się to moim nawykiem: tworzę kopie zapasowe plików, czyszczę system, instaluję wszystko od zera, przywracam pliki, a następnie ponownie instaluję moje ulubione aplikacje. Zmieniam też ustawienia systemu na własne. Czasami zajmuje to zbyt dużo czasu. A ostatnio zastanawiałam się, czy ten ból głowy jest mi potrzebny.

czas jest jednym z trzech znaczników czasu plików w systemie Linux (więcej na ten temat później). W szczególności zastanawiałem się, czy nadal dobrym pomysłem byłoby wyłączenie atime w nowszych systemach Linux. Ponieważ atime jest aktualizowany przy każdym dostępie do pliku, zdałem sobie sprawę, że ma to znaczący wpływ na wydajność systemu.
Niedawno zaktualizowałem do Fedory 32 i z przyzwyczajenia zacząłem od wyłączenia atime. Pomyślałem: czy naprawdę tego potrzebuję? Postanowiłem przestudiować ten problem i oto, co wykopałem.

Trochę o znacznikach czasu plików

Aby to zrozumieć, musisz cofnąć się o krok i pamiętać kilka rzeczy o systemach plików Linuksa oraz o tym, jak jądro oznacza znaczniki czasu plikom i katalogom. Możesz zobaczyć datę ostatniej modyfikacji plików i katalogów, uruchamiając polecenie ls -l (długie) lub po prostu przeglądając informacje na ten temat w menedżerze plików. Ale za kulisami jądro Linuksa śledzi kilka znaczników czasu plików i katalogów:

  1. Kiedy plik był ostatnio modyfikowany (mtime)
  2. Kiedy ostatni raz zmieniono właściwości pliku i metadane (ctime)
  3. Kiedy był ostatni dostęp do pliku (atime)
  4. Możesz użyć polecenia stanaby wyświetlić informacje o pliku lub katalogu. Oto plik / etc / fstab z jednego z moich serwerów testowych:

$ stat fstab
  File: fstab
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2097285     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2019-04-25 21:10:18.083325111 -0500
Modify: 2019-05-16 10:46:47.427686706 -0500
Change: 2019-05-16 10:46:47.434686674 -0500
 Birth: 2019-04-25 21:03:11.840496275 -0500

Tutaj widać, że plik ten powstał 25 kwietnia 2019 roku, kiedy instalowałem system. Mój plik / etc / fstab został ostatnio zmodyfikowany 16 maja 2019 r., a wszystkie inne atrybuty zostały zmienione mniej więcej w tym samym czasie.

Jeśli skopiuję / etc / fstab do nowego pliku, daty zmieniają się, wskazując, że jest to nowy plik:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  File: fstab.bak
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:53:58.443659981 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

Ale jeśli po prostu zmienię nazwę pliku bez zmiany jego zawartości, Linux zaktualizuje tylko czas modyfikacji pliku:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  File: fstab.tmp
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:54:24.576508232 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

Te znaczniki czasu są bardzo przydatne w przypadku niektórych programów uniksowych. Na przykład biff to program, który powiadamia Cię, gdy w Twojej wiadomości e-mail pojawi się nowa wiadomość. Obecnie niewiele osób korzysta szturchaniec, ale w czasach, gdy skrzynki pocztowe były lokalne w systemie, biff był dość powszechny.

Skąd program wie, czy w Twojej skrzynce odbiorczej znajduje się nowa poczta? biff porównuje czas ostatniej modyfikacji (kiedy plik skrzynki odbiorczej został zaktualizowany nową wiadomością e-mail) i czas ostatniego dostępu (kiedy ostatni raz przeczytałeś wiadomość e-mail). Jeśli zmiana nastąpiła później niż dostęp, to biff zrozumie, że przyszedł nowy list i powiadomi Cię o tym. Klient poczty elektronicznej Mutt działa w podobny sposób.

Znacznik czasu ostatniego dostępu jest również przydatny, jeśli chcesz zebrać statystyki użycia systemu plików i dostroić wydajność. Administratorzy systemu muszą wiedzieć, do jakich obiektów uzyskuje się dostęp, aby móc odpowiednio skonfigurować system plików.

Jednak większość nowoczesnych programów nie potrzebuje już tej etykiety, więc zaproponowano, aby jej nie używać. W 2007 roku Linus Torvalds i kilku innych programistów jądra omawiało czas w kontekście problemu z wydajnością. Twórca jądra Linuksa, Ingo Molnar, poczynił następujące uwagi na temat atime i systemu plików ext3:

„To dość dziwne, że każdy komputer stacjonarny i serwer z Linuksem odczuwa zauważalną degradację wydajności we/wy z powodu ciągłych aktualizacji czasu, mimo że prawdziwych użytkowników jest tylko dwóch: tmpwatch [który można skonfigurować do używania ctime, więc nie jest to duży problem] i niektóre narzędzia do tworzenia kopii zapasowych.”

Jednak ludzie nadal korzystają z niektórych programów wymagających tej etykiety. Zatem usunięcie atime przerwie ich funkcjonalność. Twórcy jądra Linuksa nie powinni naruszać wolności użytkownika.

Rozwiązanie Salomona

W dystrybucjach Linuksa znajduje się wiele aplikacji, a ponadto użytkownicy mogą pobierać i instalować inne programy zgodnie ze swoimi potrzebami. Jest to kluczowa zaleta systemu operacyjnego typu open source. Utrudnia to jednak optymalizację wydajności systemu plików. Usunięcie komponentów wymagających dużej ilości zasobów może zakłócić działanie systemu.

W ramach kompromisu twórcy jądra Linuksa wprowadzili nową opcję czasu przekaźnika, która ma zapewnić równowagę pomiędzy wydajnością i kompatybilnością:

atime jest aktualizowane tylko wtedy, gdy poprzedni czas dostępu jest krótszy niż bieżący czas modyfikacji lub zmiany statusu... Od Linuksa 2.6.30 jądro domyślnie używa tej opcji (chyba że określono noatime)... Również od Linuksa 2.6.30. 1, czas ostatniego dostępu do pliku jest zawsze aktualizowany, jeśli jest on starszy niż XNUMX dzień.

Nowoczesne systemy Linux (od Linuksa 2.6.30 wydanego w 2009 roku) już korzystają z czasu przekaźnika, co powinno dać naprawdę duży wzrost wydajności. Oznacza to, że nie musisz konfigurować pliku / etc / fstab, a w przypadku czasu przekaźnika możesz polegać na wartości domyślnej.

Poprawa wydajności systemu za pomocą noatime

Jeśli jednak chcesz dostroić swój system, aby uzyskać maksymalną wydajność, wyłączenie atime jest nadal możliwe.

Zmiana wydajności może nie być bardzo zauważalna na bardzo szybkich, nowoczesnych dyskach (takich jak NVME lub Fast SSD), ale jest tam niewielki wzrost.

Jeśli wiesz, że nie używasz oprogramowania wymagającego atime, możesz nieznacznie poprawić wydajność, włączając opcję noatime w pliku /etc/fstab. Po tym, jądro nie będzie stale aktualizowane. Użyj opcji noatime podczas montowania systemu plików:

/dev/mapper/fedora_localhost--live-root /          ext4   defaults,noatime,x-systemd.device-timeout=0 1 1
UUID=be37c451-915e-4355-95c4-654729cf662a /boot    ext4   defaults,noatime        1 2
UUID=C594-12B1                          /boot/efi  vfat   umask=0077,shortname=winnt 0 2
/dev/mapper/fedora_localhost--live-home /home      ext4   defaults,noatime,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora_localhost--live-swap none       swap   defaults,x-systemd.device-timeout=0 0 0

Zmiany zaczną obowiązywać przy następnym ponownym uruchomieniu.

O prawach reklamy

Czy potrzebujesz serwera do hostowania swojej witryny internetowej? Nasza firma oferuje niezawodne serwery przy dziennej lub jednorazowej płatności każdy serwer jest podłączony do kanału internetowego o przepustowości 500 Megabitów i jest chroniony przed atakami DDoS za darmo!

Jak i dlaczego opcja noatime poprawia wydajność systemów Linux

Źródło: www.habr.com

Dodaj komentarz