Bagaimana dan mengapa pilihan noatime meningkatkan prestasi sistem Linux

Kemas kini Atime menjejaskan prestasi sistem. Apa yang berlaku di sana dan apa yang perlu dilakukan mengenainya - baca artikel itu.

Bagaimana dan mengapa pilihan noatime meningkatkan prestasi sistem Linux
Setiap kali saya mengemas kini Linux pada komputer rumah saya, saya perlu menyelesaikan masalah tertentu. Selama bertahun-tahun, ini telah menjadi kebiasaan: Saya menyandarkan fail saya, memadam sistem, memasang segala-galanya dari awal, memulihkan fail saya, kemudian memasang semula aplikasi kegemaran saya. Saya juga menukar tetapan sistem untuk disesuaikan dengan diri saya sendiri. Kadang-kadang ia mengambil masa yang terlalu lama. Dan baru-baru ini saya tertanya-tanya sama ada saya memerlukan sakit kepala ini.

masa ialah salah satu daripada tiga cap masa untuk fail dalam Linux (lebih lanjut mengenai perkara ini kemudian). Khususnya, saya tertanya-tanya sama ada idea yang baik untuk melumpuhkan masa pada sistem Linux yang lebih terkini. Memandangkan atime dikemas kini setiap kali fail diakses, saya menyedari bahawa ia mempunyai kesan yang besar terhadap prestasi sistem.
Saya baru-baru ini menaik taraf kepada Fedora 32 dan, di luar kebiasaan, bermula dengan melumpuhkan atime. Saya fikir: adakah saya benar-benar memerlukannya? Saya memutuskan untuk mengkaji isu ini dan inilah yang saya gali.

Sedikit tentang cap masa fail

Untuk memikirkannya, anda perlu berundur selangkah dan mengingati beberapa perkara tentang sistem fail Linux dan cara cap masa kernel mengecap fail dan direktori. Anda boleh melihat tarikh terakhir fail dan direktori yang diubah suai dengan menjalankan arahan ls -l (panjang) atau hanya dengan melihat maklumat mengenainya dalam pengurus fail. Tetapi di sebalik tabir, kernel Linux menjejaki beberapa cap masa untuk fail dan direktori:

  1. Bilakah fail terakhir diubah suai (mtime)
  2. Bilakah kali terakhir sifat fail dan metadata ditukar (ctime)
  3. Bilakah fail terakhir diakses (masa)
  4. Anda boleh menggunakan arahan statuntuk melihat maklumat tentang fail atau direktori. Berikut ialah failnya / etc / fstab dari salah satu pelayan ujian 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

Di sini anda dapat melihat bahawa fail ini telah dibuat pada 25 April 2019 apabila saya memasang sistem. Fail saya / etc / fstab kali terakhir diubah suai pada 16 Mei 2019 dan semua atribut lain telah ditukar pada masa yang sama.

Jika saya menyalin / etc / fstab kepada fail baharu, tarikh berubah untuk menunjukkan bahawa ia adalah fail baharu:

$ 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 menamakan semula fail tanpa menukar kandungannya, Linux hanya akan mengemas kini masa fail itu diubah suai:

$ 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

Cap masa ini sangat berguna untuk program Unix tertentu. Contohnya, biff ialah program yang memberitahu anda apabila terdapat mesej baharu dalam e-mel anda. Sekarang ni dah jarang orang guna biff, tetapi pada zaman peti mel adalah setempat kepada sistem, biff adalah perkara biasa.

Bagaimanakah program mengetahui jika anda mempunyai mel baharu dalam peti masuk anda? biff membandingkan masa terakhir diubah suai (apabila fail peti masuk dikemas kini dengan mesej e-mel baharu) dan masa akses terakhir (kali terakhir anda membaca e-mel anda). Jika perubahan berlaku lewat daripada akses, maka biff akan memahami bahawa surat baharu telah tiba dan akan memberitahu anda mengenainya. Pelanggan e-mel Mutt berfungsi dengan cara yang sama.

Cap masa akses terakhir juga berguna jika anda perlu mengumpul statistik penggunaan sistem fail dan menala prestasi. Pentadbir sistem perlu mengetahui objek yang sedang diakses supaya mereka boleh mengkonfigurasi sistem fail dengan sewajarnya.

Tetapi kebanyakan program moden tidak lagi memerlukan label ini, jadi terdapat cadangan untuk tidak menggunakannya. Pada tahun 2007, Linus Torvalds dan beberapa pembangun kernel lain membincangkan masa dalam konteks isu prestasi. Pembangun kernel Linux Ingo Molnar membuat perkara berikut tentang atime dan sistem fail ext3:

"Agak pelik bahawa setiap desktop dan pelayan Linux mengalami kemerosotan prestasi I/O yang ketara disebabkan oleh kemas kini masa yang berterusan, walaupun terdapat hanya dua pengguna sebenar: tmpwatch [yang boleh dikonfigurasikan untuk menggunakan ctime, jadi ia bukan masalah besar] dan beberapa alat sandaran."

Tetapi orang masih menggunakan beberapa program yang memerlukan label ini. Jadi mengalih keluar atime akan merosakkan fungsinya. Pembangun kernel Linux tidak seharusnya melanggar kebebasan pengguna.

Penyelesaian Solomon

Terdapat banyak aplikasi yang disertakan dalam pengedaran Linux dan sebagai tambahan, pengguna boleh memuat turun dan memasang program lain mengikut keperluan mereka. Ini adalah kelebihan utama OS sumber terbuka. Tetapi ini menyukarkan untuk mengoptimumkan prestasi sistem fail anda. Mengalih keluar komponen intensif sumber boleh mengganggu sistem.

Sebagai kompromi, pembangun kernel Linux telah memperkenalkan pilihan masa geganti baharu yang bertujuan untuk mencapai keseimbangan antara prestasi dan keserasian:

atime dikemas kini hanya jika masa capaian sebelumnya kurang daripada masa pengubahsuaian atau perubahan status semasa... Sejak Linux 2.6.30, kernel menggunakan pilihan ini secara lalai (melainkan noatime dinyatakan)... Juga, sejak Linux 2.6.30 . 1, masa capaian terakhir fail sentiasa dikemas kini jika ia berumur lebih daripada XNUMX hari.

Sistem Linux moden (sejak Linux 2.6.30, dikeluarkan pada 2009) sudah menggunakan masa geganti, yang sepatutnya memberikan peningkatan prestasi yang sangat besar. Ini bermakna anda tidak perlu mengkonfigurasi fail / etc / fstab, dan dengan masa geganti anda boleh bergantung pada lalai.

Meningkatkan prestasi sistem dengan noatime

Tetapi jika anda ingin menyesuaikan sistem anda untuk mendapatkan prestasi maksimum, melumpuhkan masa masih boleh dilakukan.

Perubahan prestasi mungkin tidak begitu ketara pada pemacu moden yang sangat pantas (seperti NVME atau Fast SSD), tetapi terdapat peningkatan kecil di sana.

Jika anda tahu anda tidak menggunakan perisian yang memerlukan masa, anda boleh meningkatkan prestasi sedikit dengan mendayakan pilihan noatime dalam fail /etc/fstab. Selepas ini, kernel tidak akan sentiasa mengemas kini masa. Gunakan pilihan noatime apabila memasang sistem fail:

/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

Perubahan akan berkuat kuasa apabila anda but semula.

Sebagai iklan

Adakah anda memerlukan pelayan untuk mengehoskan tapak web anda? Syarikat kami menawarkan pelayan yang boleh dipercayai dengan pembayaran harian atau sekali, setiap pelayan disambungkan ke saluran Internet 500 Megabit dan dilindungi daripada serangan DDoS secara percuma!

Bagaimana dan mengapa pilihan noatime meningkatkan prestasi sistem Linux

Sumber: www.habr.com

Tambah komen