Điểm:0

Hiểu mối quan hệ buff/cache và tmpfs trên hệ thống tệp chỉ đọc không có trao đổi

lá cờ ru

Chúng tôi có một lỗi thực sự kỳ lạ khi hệ điều hành Yocto chạy trên Raspberry Pi sẽ bị 'khóa' do chờ đĩa IO.

Kịch bản:

  • hệ điều hành chạy chỉ đọc và không có trao đổi
  • có một hệ thống tệp tmpfs cho những thứ mà hệ điều hành cần ghi vào (/ var, / log, v.v.)
  • tmpfs có mặc định là một nửa trong số 2GB RAM khả dụng
  • có một ổ cứng USB được kết nối để lưu trữ các tệp MP4 lớn

Sau một thời gian chạy chương trình Python tương tác với bộ tăng tốc Google Coral USB, đầu ra của hàng đầu Là:

đầu ra của lệnh hàng đầu

Vì vậy, tải CPU lớn nhưng mức sử dụng CPU thấp. Chúng tôi tin rằng điều này là do nó đang đợi IO vào đĩa cứng USB.

Những lần khác, chúng ta sẽ thấy mức sử dụng bộ đệm cao hơn nữa:

Mem: 1622744K đã sử dụng, 289184K miễn phí, 93712K shrd, 32848K buff, 1158916K cache
CPU: 0% usr 0% sys 0% nic 24% nhàn rỗi 74% io 0% irq 0% sirq
Tải trung bình: 5,00 4,98 4,27 1/251 2645

Hệ thống tập tin trông khá bình thường:

root@ifu-14:~# df -h
Kích thước hệ thống tệp được sử dụng Có sẵn Sử dụng % Được gắn trên
/dev/root 3.1G 528.1M 2.4G 18%/
devtmpfs 804,6M 4,0K 804,6M 0%/dev
tmpfs 933,6M 80,0K 933,5M 0%/dev/shm
tmpfs 933,6M 48,6M 884,9M 5%/lần chạy
tmpfs 933,6 triệu 0 933,6 triệu 0% /sys/fs/cgroup
tmpfs 933,6 triệu 48,6 triệu 884,9 triệu 5% /etc/machine-id
tmpfs 933,6M 1,5M 932,0M 0%/tmp
tmpfs 933,6M 41,3M 892,3M 4%/var/dễ bay hơi
tmpfs 933,6M 41,3M 892,3M 4%/var/ống chỉ
tmpfs 933,6M 41,3M 892,3M 4%/var/lib
tmpfs 933,6M 41,3M 892,3M 4%/var/bộ đệm
/dev/mmcblk0p1 39,9 triệu 28,0 triệu 11,9 triệu 70% /uboot
/dev/mmcblk0p4 968,3M 3,3M 899,0M 0%/dữ liệu
/dev/mmcblk0p4 968,3M 3,3M 899,0M 0% /etc/hostname
/dev/mmcblk0p4 968,3M 3,3M 899,0M 0% /etc/NetworkManager
/dev/sda1 915,9G 30,9G 838,4G 4%/mnt/sda1

Khi tất cả 'khóa', chúng tôi nhận thấy rằng ổ cứng USB vì hoàn toàn không phản hồi (ls không làm gì cả và chỉ đóng băng).

Trong nhật ký dmesg, chúng tôi đã nhận thấy các dòng sau (được dán dưới dạng hình ảnh để giữ màu):

đầu ra dmesg

Đây là đầu ra đầy đủ của dmesg sau khi chúng tôi bắt đầu gặp các lỗi sau: https://Pastebin.com/W7k4cp35

Chúng tôi phỏng đoán rằng khi phần mềm chạy trên hệ thống cố gắng thực hiện điều gì đó với một tệp lớn (50MB +) (di chuyển tệp đó trên ổ cứng USB), bằng cách nào đó hệ thống sắp hết bộ nhớ.

Chúng tôi thực sự không chắc làm thế quái nào mà chúng tôi tiến hành được. Chúng tôi tìm thấy blog này: https://www.blackmoreops.com/2014/09/22/linux-kernel-panic-issue-fix-hung_task_timeout_secs-blocked-120-seconds-problem/ loại nào có vẻ giống như cùng một vấn đề và đề xuất sửa đổi vm.dirty_ratiovm.dirty_background_ratio để xóa bộ đệm vào đĩa thường xuyên hơn.

Đó có phải là cách tiếp cận đúng không?

Các cài đặt hiện tại là vm.dirty_ratio = 20vm.dirty_background_ratio = 10

Ổ cứng USB tương đối chậm có thể yêu cầu thay đổi điều này không? Ai đó có thể giải thích những gì đang xảy ra?

Điểm:3
lá cờ cn
[sda] lệnh hết thời gian thẻ # 0, đợi 180 giây
blkupdate_request: Lỗi I/O, nhà phát triển sda1
THÔNG TIN: tác vụ jbd2/sda1 bị chặn trong hơn 122 giây.

Chặn thiết bị/dev/sda không thành công. Thay thế nó và khôi phục dữ liệu.

Các cảnh báo bị chặn tác vụ của Linux là khi một tác vụ không có tiến triển gì đối với một vài phút. Đó là sự vĩnh cửu đối với một chiếc máy tính, thậm chí là một hệ thống lưu trữ. Sự cố I/O kích hoạt không bình thường. Bộ lưu trữ bị lỗi hoặc có quá nhiều tranh chấp vô lý hoặc thứ gì đó bị thiếu tài nguyên nghiêm trọng. Vì các thông báo khác chứa bằng chứng về lỗi I/O, nên có khả năng xảy ra lỗi đầu tiên.

Nếu bộ lưu trữ đã được thay thế, có thể kiểu máy đó chậm và không phù hợp với ứng dụng này. Hãy thử ổ SSD hiệu suất cao, chẳng hạn như NVMe trong bộ chuyển đổi USB 3 hoặc tương tự.

Ngoài ra, hãy đưa ra một bài kiểm tra tải tổng hợp để thực hiện bộ lưu trữ giống như ứng dụng thực hiện và nhận được một số con số hiệu suất. Viết ngẫu nhiên nhỏ, viết liên tiếp dài, có lẽ là sự kết hợp. Trên Linux, fio là một trình kiểm tra I/O rất linh hoạt.

Cuối cùng, có thể các thành phần phần cứng khác đang bị lỗi. Là một Raspberry Pi, hãy thử thay thế toàn bộ.

Massimo avatar
lá cờ ng
Dựa trên kích thước, `/dev/sda1` phải là đĩa USB (câu hỏi đã mô tả tình trạng đóng băng); bản thân đĩa bị lỗi hoặc có gì đó không ổn với vỏ bọc của nó.
lá cờ ru
Hôm nay tôi đã thử ba ổ đĩa hoàn toàn mới giống hệt nhau, nhưng tôi sẽ thử một nhãn hiệu khác vào ngày mai. Điều kỳ lạ là vấn đề chỉ xuất hiện khi chúng tôi chạy một chương trình sử dụng trình tăng tốc Google Coral AI và bộ nhớ lớn hơn một chút. Có thể tranh chấp trên bus USB? Nếu Google Coral không hoạt động, sẽ không có vấn đề gì.
John Mahowald avatar
lá cờ cn
Một số lỗi chỉ xuất hiện dưới tải. Tiếp tục thay thế mọi thứ và thử các mô hình lưu trữ khác nhau.
Điểm:1
lá cờ ru

Là một bản cập nhật cho câu hỏi này, các câu trả lời trước đây ở đây khá nhiều về tiền.

Trên thực tế, vấn đề là Raspberry Pi 4 không thể cung cấp đủ năng lượng từ các cổng USB của nó để điều khiển cả ổ cứng USB và Google Coral cùng một lúc trong một thời gian dài. Sau một thời gian, ổ cứng USB bắt đầu hoạt động rất kỳ lạ theo nhật ký ở trên khiến nó trông giống như bị lỗi.

Chuyển sang ổ SSD khiến vấn đề biến mất ngay lập tức.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.