GNU/Linux >> Belajar Linux >  >> Linux

Tingkatkan kinerja sistem Linux dengan noatime

Setiap kali saya memutakhirkan Linux di komputer rumah saya, saya memiliki daftar tugas yang biasanya saya lakukan. Mereka telah menjadi kebiasaan selama bertahun-tahun:Saya mencadangkan file saya, menghapus sistem, menginstal ulang dari awal, memulihkan file saya, lalu menginstal ulang aplikasi tambahan favorit saya. Saya juga membuat beberapa tweak sistem. Saya telah membuat beberapa penyesuaian ini begitu lama sehingga saya baru-baru ini bertanya-tanya apakah saya masih perlu melakukannya.

Satu tweak adalah atime , yang merupakan salah satu dari tiga stempel waktu pada setiap file di Linux (lebih lanjut tentang itu nanti). Secara khusus, saya bertanya-tanya apakah masih layak untuk menonaktifkan atime dalam sistem Linux yang lebih baru. Sejak atime diperbarui setiap kali file diakses, pemahaman saya adalah bahwa itu berdampak signifikan pada kinerja sistem.

Saya baru-baru ini memutakhirkan komputer saya ke Fedora 32 dan mematikan atime pada sistem saya yang ditingkatkan karena kebiasaan. Tapi apakah saya masih perlu? Saya memutuskan untuk melihat lebih jauh. Inilah yang saya temukan.

Sedikit tentang stempel waktu file

Untuk memahami noatime , Anda perlu mengambil langkah mundur dan memahami beberapa hal tentang sistem file Linux dan bagaimana kernel menerapkan stempel waktu ke file dan direktori. Anda mungkin sudah mengetahui tanggal Terakhir Dimodifikasi pada file dan direktori; Anda dapat melihatnya dalam ls -l daftar direktori (panjang) atau jika Anda melihat detail file di manajer file. Namun di balik layar, kernel Linux melacak beberapa stempel waktu pada file dan direktori:

  1. Kapan file terakhir diubah (mtime )
  2. Kapan terakhir kali file diubah (ctime )
  3. Kapan terakhir kali file diakses (atime )

Anda dapat menggunakan stat perintah untuk melihat detail ini untuk file atau direktori. Berikut adalah contoh dari /etc/fstab file di salah satu server pengujian saya:

$ 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

Dari output, Anda dapat melihat file ini dibuat pada 25 April 2019, ketika saya menginstal sistem. /etc/fstab saya file terakhir diubah pada 16 Mei 2019, dan atribut lainnya diubah pada waktu yang hampir bersamaan.

Jika saya menyalin /etc/fstab ke file baru, tanggal berubah, menunjukkan bahwa ini adalah file baru:

$ 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

Tetapi jika saya hanya mengganti nama file tanpa mengubah isinya, Linux hanya memperbarui waktu Ubah file:

$ 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

Stempel waktu ini sangat berguna untuk program Unix tertentu. Misalnya, biff adalah program yang memberi tahu Anda ketika Anda memiliki pesan email baru. Anda tidak melihat banyak orang menggunakan biff akhir-akhir ini, tetapi pada hari-hari ketika kotak surat bersifat lokal untuk sistem Anda, biff cukup umum.

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Bagaimana sebuah program mengetahui jika Anda memiliki email baru di kotak masuk Anda? Biff membandingkan waktu Terakhir Dimodifikasi (saat file kotak masuk diperbarui dengan pesan email baru) dan waktu Terakhir Diakses (terakhir kali Anda membaca email). Jika Dimodifikasi lebih baru daripada Diakses, maka biff mengetahui bahwa pesan email telah tiba sejak terakhir kali Anda membaca email dan memberi tahu Anda. Klien email Mutt melakukan hal serupa untuk memperingatkan Anda saat pesan baru tiba.

Waktu Terakhir Diakses juga berguna jika Anda perlu melakukan statistik sistem file dan penyesuaian kinerja. Pada sistem Linux yang besar, administrator mungkin perlu mengetahui apa yang sedang diakses sehingga mereka dapat menyesuaikan sistem file dengan tepat.

Tetapi sebagian besar program modern tidak lagi memerlukan waktu Terakhir Diakses, jadi ada beberapa argumen untuk tidak menggunakannya. Pada tahun 2007, Linus Torvalds dan beberapa pengembang kernel lainnya membahas atime dan masalah kinerjanya. Pengembang kernel Linux Ingo Molnár membuat pengamatan ini tentang atime dan sistem file ext3:

Agak aneh bahwa setiap desktop dan server Linux terganggu oleh penurunan kinerja IO yang nyata karena pembaruan atime yang konstan, sementara hanya ada dua pengguna sebenarnya:tmpwatch [yang dapat dikonfigurasi untuk menggunakan ctime jadi itu bukan masalah besar] dan beberapa alat cadangan. (Oke, dan saya kira juga beri tahu email.) Dari puluhan ribuan aplikasi.

Tetapi orang masih menggunakan beberapa program yang membutuhkannya, dan menghapus atime akan merusak program pengguna tersebut. Dan aturan dalam pengembangan kernel Linux adalah tidak merusak ruang pengguna.

Kompromi relatime

Distribusi Linux mencakup banyak aplikasi perangkat lunak, dan pengguna dapat mengunduh dan menginstal program lain yang sesuai dengan kebutuhan khusus mereka. Itulah manfaat utama dari sistem operasi open source! Tapi itu membuat segalanya lebih sulit dalam menyetel kinerja sistem file Anda. Apakah Anda memerlukan atime , atau apakah menghapusnya akan merusak sesuatu di sistem Anda?

Sebagai kompromi, pengembang kernel Linux menerapkan metode baru:relatime adalah ukuran kinerja yang sedikit berbeda yang dimaksudkan untuk menyeimbangkan kinerja dengan kompatibilitas. mount halaman manual mengatakan ini tentang relatime :

Waktu akses hanya diperbarui jika waktu akses sebelumnya lebih awal dari waktu modifikasi atau perubahan saat ini. … Sejak Linux 2.6.30, kernel default ke perilaku yang disediakan oleh opsi ini (kecuali noatime ditentukan) … Selain itu, sejak Linux 2.6.30, waktu akses terakhir file selalu diperbarui jika lebih dari 1 hari.

Singkatnya:sistem Linux modern (sejak Linux 2.6.30, dirilis pada 2009) sudah menggunakan relatime , yang seharusnya memberi Anda peningkatan performa yang sangat cepat. Itu berarti Anda tidak perlu mengubah /etc/fstab file dan dapat mengandalkan relatime kernel default.

Mengubah kinerja sistem dengan noatime

Tetapi jika Anda ingin mengubah sistem Anda untuk mendapatkan kinerja maksimal, nonaktifkan atime masih merupakan opsi yang valid di tahun 2020.

Perubahan kinerja ini mungkin tidak terlalu terlihat pada drive modern yang sangat cepat (seperti NVME atau SSD cepat), tetapi masih ada sedikit peningkatan di sana.

Jika Anda tahu Anda tidak menggunakan perangkat lunak yang memerlukan atime , maka Anda bisa mendapatkan sedikit peningkatan kinerja dengan menyetel noatime di /etc/fstab mengajukan. Ini memberi tahu kernel untuk tidak melacak waktu Terakhir Diakses, menghindari kinerja kecil itu untuk terus memperbarui atime dalam sistem file. Tambahkan noatime sebagai opsi untuk sistem file Linux Anda, biasanya setelah entri default:

/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

Ini akan berlaku saat berikutnya Anda melakukan boot ulang.


Linux
  1. Memahami panggilan sistem di Linux dengan strace

  2. Urutkan Perintah di Linux dengan Contoh

  3. Perintah Shutdown Linux (dengan Contoh)

  1. Pemecahan masalah Linux 101:Kinerja sistem

  2. Apa saja opsi pemasangan untuk meningkatkan kinerja sistem file ext4 di Linux?

  3. Bagaimana saya bisa menggunakan rsync dengan sistem file FAT?

  1. Menjadwalkan tugas sistem dengan Cron di Linux

  2. Cara Memantau Kinerja Sistem Linux dengan Sysstat

  3. Izin File di Linux dengan Contoh