การอัพเดต Atime ส่งผลต่อประสิทธิภาพของระบบ เกิดอะไรขึ้นที่นั่นและต้องทำอย่างไร - อ่านบทความ
เมื่อใดก็ตามที่ฉันอัปเดต Linux บนคอมพิวเตอร์ที่บ้าน ฉันจะต้องแก้ไขปัญหาบางอย่าง หลายปีที่ผ่านมา สิ่งนี้กลายเป็นนิสัย: ฉันสำรองไฟล์ ล้างระบบ ติดตั้งทุกอย่างตั้งแต่เริ่มต้น กู้คืนไฟล์ จากนั้นติดตั้งแอปพลิเคชันโปรดของฉันใหม่ ฉันยังเปลี่ยนการตั้งค่าระบบให้เหมาะกับตัวเองด้วย บางครั้งก็ใช้เวลานานเกินไป และเมื่อเร็ว ๆ นี้ฉันสงสัยว่าฉันต้องการอาการปวดหัวนี้หรือไม่
เวลา เป็นหนึ่งในสามการประทับเวลาสำหรับไฟล์ใน Linux (เพิ่มเติมในภายหลัง) โดยเฉพาะอย่างยิ่ง ฉันสงสัยว่าจะเป็นความคิดที่ดีหรือไม่ที่จะปิดการใช้งาน atime บนระบบ Linux รุ่นล่าสุด เนื่องจาก atime ได้รับการอัพเดตทุกครั้งที่มีการเข้าถึงไฟล์ ฉันจึงตระหนักว่ามันมีผลกระทบอย่างมากต่อประสิทธิภาพของระบบ
ฉันเพิ่งอัพเกรดเป็น Fedora 32 และโดยเริ่มจากการปิดการใช้งาน atime ฉันคิดว่า: ฉันต้องการมันจริงๆเหรอ? ฉันตัดสินใจศึกษาปัญหานี้และนี่คือสิ่งที่ฉันขุดขึ้นมา
เล็กน้อยเกี่ยวกับการประทับเวลาของไฟล์
หากต้องการทราบ คุณต้องย้อนกลับไปและจดจำบางสิ่งเกี่ยวกับระบบไฟล์ Linux และวิธีที่เคอร์เนลประทับเวลาไฟล์และไดเร็กทอรี คุณสามารถดูวันที่แก้ไขล่าสุดของไฟล์และไดเร็กทอรีได้โดยการรันคำสั่ง ls -l (ยาว) หรือเพียงแค่ดูข้อมูลเกี่ยวกับมันในตัวจัดการไฟล์ แต่เบื้องหลัง เคอร์เนล Linux ติดตามการประทับเวลาหลายรายการสำหรับไฟล์และไดเร็กทอรี:
- ไฟล์ถูกแก้ไขครั้งล่าสุดเมื่อใด (mtime)
- ครั้งสุดท้ายที่คุณสมบัติไฟล์และข้อมูลเมตามีการเปลี่ยนแปลง (เวลา)
- ไฟล์ถูกเข้าถึงครั้งล่าสุดเมื่อใด (atime)
- คุณสามารถใช้คำสั่ง statเพื่อดูข้อมูลเกี่ยวกับไฟล์หรือไดเร็กทอรี นี่คือไฟล์ / etc / fstab จากหนึ่งในเซิร์ฟเวอร์ทดสอบของฉัน:
$ 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
ที่นี่คุณจะเห็นว่าไฟล์นี้ถูกสร้างขึ้นเมื่อวันที่ 25 เมษายน 2019 ตอนที่ฉันติดตั้งระบบ ไฟล์ของฉัน / etc / fstab ได้รับการแก้ไขครั้งล่าสุดเมื่อวันที่ 16 พฤษภาคม 2019 และคุณลักษณะอื่นๆ ทั้งหมดมีการเปลี่ยนแปลงในเวลาเดียวกัน
ถ้าฉันคัดลอก / etc / fstab เป็นไฟล์ใหม่ วันที่จะเปลี่ยนเพื่อระบุว่าเป็นไฟล์ใหม่:
$ 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
แต่หากฉันเปลี่ยนชื่อไฟล์โดยไม่เปลี่ยนเนื้อหา Linux จะอัปเดตเฉพาะเวลาที่ไฟล์ถูกแก้ไขเท่านั้น:
$ 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
การประทับเวลาเหล่านี้มีประโยชน์มากสำหรับโปรแกรม Unix บางโปรแกรม ตัวอย่างเช่น biff คือโปรแกรมที่แจ้งให้คุณทราบเมื่อมีข้อความใหม่ในอีเมลของคุณ ปัจจุบันมีคนใช้น้อย
โปรแกรมจะรู้ได้อย่างไรว่าคุณมีจดหมายใหม่ในกล่องจดหมายของคุณหรือไม่? biff เปรียบเทียบเวลาที่แก้ไขล่าสุด (เมื่อไฟล์กล่องจดหมายถูกอัปเดตด้วยข้อความอีเมลใหม่) และเวลาเข้าถึงล่าสุด (ครั้งสุดท้ายที่คุณอ่านอีเมลของคุณ) หากการเปลี่ยนแปลงเกิดขึ้นช้ากว่าการเข้าถึง biff จะเข้าใจว่ามีจดหมายฉบับใหม่มาถึงแล้วและจะแจ้งให้คุณทราบ โปรแกรมรับส่งอีเมล Mutt ทำงานในลักษณะเดียวกันมาก
การประทับเวลาการเข้าถึงครั้งล่าสุดยังมีประโยชน์หากคุณต้องการรวบรวมสถิติการใช้งานระบบไฟล์และปรับแต่งประสิทธิภาพ ผู้ดูแลระบบจำเป็นต้องทราบว่ามีการเข้าถึงออบเจ็กต์ใดบ้าง เพื่อให้สามารถกำหนดค่าระบบไฟล์ได้อย่างเหมาะสม
แต่โปรแกรมสมัยใหม่ส่วนใหญ่ไม่ต้องการป้ายกำกับนี้อีกต่อไป จึงมีข้อเสนอที่จะไม่ใช้ป้ายกำกับนี้ ในปี 2007 Linus Torvalds และผู้พัฒนาเคอร์เนลอีกหลายคนได้หารือกันในบริบทของปัญหาด้านประสิทธิภาพ ผู้พัฒนาเคอร์เนล Linux Ingo Molnar ได้กล่าวถึงประเด็นต่อไปนี้เกี่ยวกับ atime และระบบไฟล์ ext3:
“ค่อนข้างแปลกที่เดสก์ท็อปและเซิร์ฟเวอร์ Linux ทุกเครื่องประสบปัญหาประสิทธิภาพ I/O ลดลงอย่างเห็นได้ชัดเนื่องจากการอัพเดตเวลาอย่างต่อเนื่อง แม้ว่าจะมีผู้ใช้จริงเพียงสองคนเท่านั้น: tmpwatch [ซึ่งสามารถกำหนดค่าให้ใช้ ctime ได้ ดังนั้นจึงไม่ใช่ปัญหาใหญ่] และ เครื่องมือสำรองข้อมูลบางอย่าง"
แต่ผู้คนยังคงใช้บางโปรแกรมที่ต้องการป้ายกำกับนี้ ดังนั้นการลบเวลาจะทำให้ฟังก์ชันการทำงานเสียหาย นักพัฒนาเคอร์เนล Linux ไม่ควรละเมิดเสรีภาพของผู้ใช้
วิธีแก้ปัญหาของโซโลมอน
มีแอปพลิเคชั่นมากมายรวมอยู่ในลีนุกซ์รุ่นต่างๆ และนอกจากนี้ ผู้ใช้สามารถดาวน์โหลดและติดตั้งโปรแกรมอื่นๆ ได้ตามความต้องการ นี่เป็นข้อได้เปรียบที่สำคัญของระบบปฏิบัติการโอเพ่นซอร์ส แต่สิ่งนี้ทำให้การเพิ่มประสิทธิภาพระบบไฟล์ของคุณทำได้ยาก การถอดส่วนประกอบที่ใช้ทรัพยากรจำนวนมากอาจทำให้ระบบหยุดชะงัก
เพื่อเป็นการประนีประนอม นักพัฒนาเคอร์เนล Linux ได้เปิดตัวตัวเลือกเวลาถ่ายทอดใหม่ซึ่งมีจุดมุ่งหมายเพื่อสร้างสมดุลระหว่างประสิทธิภาพและความเข้ากันได้:
atime จะได้รับการอัปเดตก็ต่อเมื่อเวลาเข้าถึงก่อนหน้าน้อยกว่าเวลาการแก้ไขปัจจุบันหรือเวลาเปลี่ยนสถานะ... ตั้งแต่ Linux 2.6.30 เคอร์เนลจะใช้ตัวเลือกนี้เป็นค่าเริ่มต้น (เว้นแต่จะระบุ noatime)... นอกจากนี้ เนื่องจาก Linux 2.6.30 วันที่ 1 เวลาเข้าถึงล่าสุดของไฟล์จะได้รับการอัปเดตเสมอหากไฟล์นั้นมีอายุมากกว่า XNUMX วัน
ระบบ Linux สมัยใหม่ (ตั้งแต่ Linux 2.6.30 เปิดตัวในปี 2009) ใช้เวลารีเลย์อยู่แล้ว ซึ่งน่าจะช่วยเพิ่มประสิทธิภาพได้อย่างมาก ซึ่งหมายความว่าคุณไม่จำเป็นต้องกำหนดค่าไฟล์ / etc / fstabและด้วยเวลารีเลย์ คุณสามารถพึ่งพาค่าเริ่มต้นได้
การปรับปรุงประสิทธิภาพของระบบด้วย noatime
แต่ถ้าคุณต้องการปรับแต่งระบบของคุณเพื่อให้ได้ประสิทธิภาพสูงสุด การปิดใช้งาน atime ยังคงเป็นไปได้
การเปลี่ยนแปลงประสิทธิภาพอาจไม่สังเกตเห็นได้ชัดเจนนักในไดรฟ์สมัยใหม่ที่เร็วมาก (เช่น NVME หรือ Fast SSD) แต่จะมีการเพิ่มขึ้นเล็กน้อย
หากคุณรู้ว่าคุณไม่ได้ใช้ซอฟต์แวร์ที่ต้องใช้เวลา คุณสามารถปรับปรุงประสิทธิภาพได้เล็กน้อยโดยเปิดใช้งานตัวเลือก noatime ในไฟล์ /etc/fstab. หลังจากนี้เคอร์เนลจะไม่อัปเดตตลอดเวลา ใช้ตัวเลือก noatime เมื่อติดตั้งระบบไฟล์:
/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
การเปลี่ยนแปลงจะมีผลในครั้งถัดไปที่คุณรีบูต
เป็นโฆษณา
คุณต้องการเซิร์ฟเวอร์เพื่อโฮสต์เว็บไซต์ของคุณหรือไม่? บริษัทของเรานำเสนอ
ที่มา: will.com