Hiệu suất Raspberry Pi: thêm ZRAM và thay đổi tham số kernel

Một vài tuần trước tôi đã đăng Đánh giá về Pinebook Pro. Vì Raspberry Pi 4 cũng dựa trên ARM nên một số tối ưu hóa được đề cập trong bài viết trước khá phù hợp với nó. Tôi muốn chia sẻ những thủ thuật này và xem liệu bạn có trải nghiệm những cải tiến hiệu suất tương tự hay không.

Sau khi cài đặt Raspberry Pi trong phòng máy chủ tại nhà Tôi nhận thấy rằng trong những thời điểm thiếu RAM, nó trở nên không phản hồi và thậm chí bị treo. Để giải quyết vấn đề này, tôi đã thêm ZRAM và thực hiện một số thay đổi đối với các tham số kernel.

Kích hoạt ZRAM trên Raspberry Pi

Hiệu suất Raspberry Pi: thêm ZRAM và thay đổi tham số kernel

ZRAM tạo một khối lưu trữ trong RAM có tên /dev/zram0 (hoặc 1, 2, 3, v.v.). Các trang được viết ở đó được nén và lưu trữ trong bộ nhớ. Điều này cho phép I/O rất nhanh và cũng giải phóng bộ nhớ thông qua việc nén.

Raspberry Pi 4 đi kèm với RAM 1, 2, 4 hoặc 8 GB. Tôi sẽ sử dụng model 1GB, vì vậy vui lòng điều chỉnh hướng dẫn dựa trên model của bạn. Với 1 GB ZRAM, tệp hoán đổi mặc định (chậm!) sẽ ít được sử dụng hơn. Tôi đã sử dụng kịch bản này trao đổi zram để cài đặt và cấu hình tự động.

Hướng dẫn được cung cấp trong kho lưu trữ được liên kết ở trên. Cài đặt:

git clone https://github.com/foundObjects/zram-swap.git
cd zram-swap && sudo ./install.sh

Nếu bạn muốn chỉnh sửa cấu hình:

vi /etc/default/zram-swap

Ngoài ra, bạn có thể kích hoạt ZRAM bằng cách cài đặt zram-tools. Nếu bạn sử dụng phương pháp này, hãy nhớ chỉnh sửa cấu hình trong tập tin /etc/default/zramswapvà cài đặt khoảng 1 GB ZRAM:

sudo apt install zram-tools

Sau khi cài đặt, bạn có thể xem số liệu thống kê lưu trữ ZRAM bằng lệnh sau:

sudo cat /proc/swaps
Filename				Type		Size	Used	Priority
/var/swap                               file		102396	0	-2
/dev/zram0                              partition	1185368	265472	5
pi@raspberrypi:~ $

Thêm tham số kernel để sử dụng ZRAM tốt hơn

Bây giờ chúng ta hãy khắc phục hiện tượng của hệ thống khi Raspberry Pi chuyển sang swap vào thời điểm cuối, điều này thường dẫn đến tình trạng treo máy. Hãy thêm một vài dòng vào tập tin /etc/sysctl.conf và khởi động lại.

Những dòng này 1) sẽ trì hoãn sự cạn kiệt không thể tránh khỏi của bộ nhớ, tăng áp lực lên bộ đệm kernel và 2) họ bắt đầu chuẩn bị cho việc cạn kiệt trí nhớ sớm hơn, bắt đầu trao đổi trước. Nhưng sẽ hiệu quả hơn nhiều khi trao đổi bộ nhớ nén thông qua ZRAM!

Đây là những dòng cần thêm vào cuối tập tin /etc/sysctl.conf:

vm.vfs_cache_pressure=500
vm.swappiness=100
vm.dirty_background_ratio=1
vm.dirty_ratio=50

Sau đó, chúng tôi khởi động lại hệ thống hoặc kích hoạt các thay đổi bằng lệnh sau:

sudo sysctl --system

vm.vfs_cache_ Pressure=500 tăng áp lực bộ đệm, làm tăng xu hướng lấy lại bộ nhớ được sử dụng để lưu trữ các đối tượng thư mục và lập chỉ mục của hạt nhân. Bạn sẽ sử dụng ít bộ nhớ hơn trong thời gian dài hơn. Hiệu suất giảm mạnh được khắc phục bằng cách hoán đổi trước đó.

vm.swappiness = 100 tăng tham số mức độ mạnh mẽ mà hạt nhân sẽ trao đổi các trang bộ nhớ, vì trước tiên chúng ta đang sử dụng ZRAM.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 - các quy trình nền sẽ bắt đầu ghi ngay lập tức khi đạt đến giới hạn 1%, nhưng hệ thống sẽ không bắt buộc I/O đồng bộ cho đến khi đạt tỷ lệ bẩn là 50%.

Bốn dòng này (khi được sử dụng với ZRAM) sẽ giúp cải thiện hiệu suất nếu bạn có tất yếu RAM hết và quá trình chuyển đổi sang trao đổi bắt đầu, giống như của tôi. Biết thực tế này và cũng tính đến việc nén bộ nhớ trong ZRAM gấp ba lần, tốt hơn là bạn nên bắt đầu quá trình hoán đổi này trước.

Việc tạo áp lực lên bộ đệm sẽ hữu ích vì về cơ bản chúng ta đang nói với kernel rằng "Này, nhìn này, tôi không có thêm bộ nhớ nào để sử dụng cho bộ đệm, vì vậy vui lòng loại bỏ nó càng sớm càng tốt và chỉ lưu trữ những thứ được sử dụng thường xuyên/quan trọng nhất." dữ liệu."

Ngay cả khi bộ nhớ đệm bị giảm, nếu theo thời gian hầu hết bộ nhớ đã cài đặt bị chiếm dụng, kernel sẽ bắt đầu hoán đổi cơ hội sớm hơn nhiều, do đó CPU (nén) và I/O trao đổi sẽ không đợi đến phút cuối cùng và sử dụng tất cả tài nguyên cùng một lúc khi quá muộn rồi. ZRAM sử dụng một ít CPU để nén, nhưng trên hầu hết các hệ thống có lượng bộ nhớ nhỏ, nó ít ảnh hưởng đến hiệu suất hơn nhiều so với trao đổi không có ZRAM.

Kết luận

Chúng ta hãy nhìn lại kết quả:

pi@raspberrypi:~ $ free -h
total used free shared buff/cache available
Mem: 926Mi 471Mi 68Mi 168Mi 385Mi 232Mi
Swap: 1.2Gi 258Mi 999Mi

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Filename Type Size Used Priority
/var/swap file 102396 0 -2
/dev/zram0 partition 1185368 264448 5

264448 trong ZRAM gần như là một gigabyte dữ liệu không nén. Mọi thứ đều được chuyển đến ZRAM và không có gì chuyển đến tệp trang chậm hơn nhiều. Hãy tự mình thử các cài đặt này, chúng hoạt động trên tất cả các mẫu Raspberry Pi. Hệ thống làm lạnh không sử dụng được của tôi đã trở thành một hệ thống hoạt động ổn định.

Trong thời gian sắp tới, mình hy vọng sẽ tiếp tục cập nhật bài viết này một số kết quả từ việc test hệ thống trước và sau khi cài đặt ZRAM. Bây giờ tôi không có thời gian cho việc này. Trong thời gian chờ đợi, vui lòng chạy thử nghiệm của riêng bạn và cho tôi biết trong phần nhận xét. Raspberry Pi 4 là một con thú với những cài đặt này. Thưởng thức!

Về chủ đề này:

Nguồn: www.habr.com

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