Cập nhật Atime ảnh hưởng đến hiệu suất hệ thống. Điều gì đang xảy ra ở đó và phải làm gì với nó - hãy đọc bài viết.
Bất cứ khi nào tôi cập nhật Linux trên máy tính ở nhà, tôi đều phải giải quyết một số vấn đề nhất định. Qua nhiều năm, điều này đã trở thành thói quen: Tôi sao lưu các tập tin của mình, xóa sạch hệ thống, cài đặt mọi thứ từ đầu, khôi phục các tập tin của mình, sau đó cài đặt lại các ứng dụng yêu thích của mình. Tôi cũng thay đổi cài đặt hệ thống cho phù hợp với bản thân. Đôi khi phải mất quá nhiều thời gian. Và gần đây tôi tự hỏi liệu tôi có cần cơn đau đầu này không.
một thời gian là một trong ba dấu thời gian cho các tệp trong Linux (sẽ nói thêm về điều này sau). Đặc biệt, tôi tự hỏi liệu việc tắt tính năng này trên các hệ thống Linux mới hơn có còn là một ý tưởng hay hay không. Vì thời gian được cập nhật mỗi khi tệp được truy cập nên tôi nhận ra rằng nó có tác động đáng kể đến hiệu suất hệ thống.
Gần đây tôi đã nâng cấp lên Fedora 32 và theo thói quen, tôi bắt đầu bằng cách vô hiệu hóa nó một lúc. Tôi nghĩ: tôi có thực sự cần nó không? Tôi quyết định nghiên cứu vấn đề này và đây là những gì tôi đã tìm hiểu được.
Một chút về dấu thời gian của tập tin
Để tìm ra điều đó, bạn cần lùi lại một bước và ghi nhớ một số điều về hệ thống tệp Linux cũng như cách dấu thời gian của hạt nhân đối với các tệp và thư mục. Bạn có thể xem ngày sửa đổi cuối cùng của tệp và thư mục bằng cách chạy lệnh ls -l (dài) hoặc đơn giản bằng cách xem thông tin về nó trong trình quản lý tệp. Nhưng đằng sau hậu trường, nhân Linux theo dõi một số dấu thời gian cho các tệp và thư mục:
- Tập tin được sửa đổi lần cuối khi nào (mtime)
- Lần cuối cùng các thuộc tính tệp và siêu dữ liệu được thay đổi là khi nào (ctime)
- Lần cuối tập tin được truy cập là khi nào (atime)
- Bạn có thể sử dụng lệnh statđể xem thông tin về một tập tin hoặc thư mục. Đây là tập tin / etc / fstab từ một trong những máy chủ thử nghiệm của tôi:
$ 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
Ở đây bạn có thể thấy file này được tạo vào ngày 25/2019/XNUMX khi tôi cài đặt hệ thống. Tập tin của tôi / etc / fstab được sửa đổi lần cuối vào ngày 16 tháng 2019 năm XNUMX và tất cả các thuộc tính khác đều được thay đổi cùng thời điểm.
Nếu tôi sao chép / etc / fstab sang một tệp mới, ngày thay đổi để cho biết đó là tệp mới:
$ 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
Nhưng nếu tôi chỉ đổi tên tệp mà không thay đổi nội dung của nó thì Linux sẽ chỉ cập nhật thời điểm tệp được sửa đổi:
$ 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
Những dấu thời gian này rất hữu ích cho một số chương trình Unix. Ví dụ: biff là chương trình thông báo cho bạn khi có thư mới trong email của bạn. Hiện nay ít người sử dụng
Làm thế nào chương trình biết được bạn có thư mới trong hộp thư đến hay không? biff so sánh thời gian sửa đổi lần cuối (khi tệp hộp thư đến được cập nhật bằng thư email mới) và thời gian truy cập lần cuối (lần cuối cùng bạn đọc email của mình). Nếu thay đổi xảy ra muộn hơn thời điểm truy cập, thì biff sẽ hiểu rằng có một lá thư mới đã đến và sẽ thông báo cho bạn về điều đó. Ứng dụng email Mutt hoạt động theo cách tương tự.
Dấu thời gian truy cập lần cuối cũng hữu ích nếu bạn cần thu thập số liệu thống kê sử dụng hệ thống tệp và điều chỉnh hiệu suất. Quản trị viên hệ thống cần biết những đối tượng nào đang được truy cập để họ có thể định cấu hình hệ thống tệp cho phù hợp.
Nhưng hầu hết các chương trình hiện đại không còn cần nhãn này nữa nên đã có đề xuất không sử dụng nó. Năm 2007, Linus Torvalds và một số nhà phát triển hạt nhân khác đã thảo luận về vấn đề hiệu năng. Nhà phát triển nhân Linux Ingo Molnar đã đưa ra quan điểm sau về atime và hệ thống tệp ext3:
"Thật kỳ lạ khi mọi máy tính để bàn và máy chủ Linux đều bị suy giảm hiệu suất I/O đáng chú ý do cập nhật liên tục theo thời gian, mặc dù chỉ có hai người dùng thực sự: tmpwatch [có thể được định cấu hình để sử dụng ctime, vì vậy đây không phải là vấn đề lớn] và một số công cụ sao lưu."
Nhưng mọi người vẫn sử dụng một số chương trình cần nhãn này. Vì vậy việc loại bỏ một thời gian sẽ phá vỡ chức năng của chúng. Các nhà phát triển nhân Linux không được xâm phạm quyền tự do của người dùng.
Giải pháp của Solomon
Có rất nhiều ứng dụng có trong bản phân phối Linux và ngoài ra, người dùng có thể tải xuống và cài đặt các chương trình khác tùy theo nhu cầu của mình. Đây là một lợi thế chính của hệ điều hành nguồn mở. Nhưng điều này gây khó khăn cho việc tối ưu hóa hiệu suất hệ thống tệp của bạn. Việc loại bỏ các thành phần sử dụng nhiều tài nguyên có thể làm gián đoạn hệ thống.
Như một sự thỏa hiệp, các nhà phát triển nhân Linux đã giới thiệu một tùy chọn thời gian chuyển tiếp mới nhằm đạt được sự cân bằng giữa hiệu suất và khả năng tương thích:
atime chỉ được cập nhật nếu thời gian truy cập trước đó nhỏ hơn thời gian sửa đổi hiện tại hoặc thời gian thay đổi trạng thái... Vì Linux 2.6.30, kernel sử dụng tùy chọn này theo mặc định (trừ khi noatime được chỉ định)... Ngoài ra, vì Linux 2.6.30 . 1, thời gian truy cập cuối cùng của tệp luôn được cập nhật nếu tệp đó cách đây hơn XNUMX ngày.
Các hệ thống Linux hiện đại (kể từ Linux 2.6.30, phát hành năm 2009) đã sử dụng thời gian chuyển tiếp, điều này sẽ giúp tăng hiệu suất thực sự lớn. Điều này có nghĩa là bạn không cần phải cấu hình tập tin / etc / fstabvà với thời gian chuyển tiếp, bạn có thể dựa vào mặc định.
Cải thiện hiệu suất hệ thống với noatime
Nhưng nếu bạn muốn điều chỉnh hệ thống của mình để đạt được hiệu suất tối đa, bạn vẫn có thể tắt nó một lúc.
Sự thay đổi hiệu suất có thể không đáng chú ý lắm trên các ổ đĩa hiện đại rất nhanh (chẳng hạn như NVME hoặc Fast SSD), nhưng có một sự gia tăng nhỏ ở đó.
Nếu bạn biết mình không sử dụng phần mềm yêu cầu atime, bạn có thể cải thiện hiệu suất một chút bằng cách bật tùy chọn noatime trong tệp /etc/fstab. Sau đó, kernel sẽ không cập nhật liên tục nữa. Sử dụng tùy chọn noatime khi gắn hệ thống tập tin:
/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
Những thay đổi sẽ có hiệu lực vào lần tiếp theo bạn khởi động lại.
Như một quảng cáo
Bạn có cần một máy chủ để lưu trữ trang web của bạn? Công ty chúng tôi cung cấp
Nguồn: www.habr.com