Cách thức và lý do tùy chọn noatime cải thiện hiệu suất của hệ thống Linux

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.

Cách thức và lý do tùy chọn noatime cải thiện hiệu suất của hệ thống Linux
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:

  1. Tập tin được sửa đổi lần cuối khi nào (mtime)
  2. 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)
  3. Lần cuối tập tin được truy cập là khi nào (atime)
  4. 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 thoi, nhưng vào thời mà các hộp thư được lưu trữ cục bộ trong hệ thống, biff khá phổ biến.

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 máy chủ đáng tin cậy với khoản thanh toán hàng ngày hoặc một lần, mỗi máy chủ được kết nối với kênh Internet 500 Megabits và được bảo vệ miễn phí khỏi các cuộc tấn công DDoS!

Cách thức và lý do tùy chọn noatime cải thiện hiệu suất của hệ thống Linux

Nguồn: www.habr.com

Thêm một lời nhận xét