Điểm:0

chỉ xóa bộ đệm ghi nếu không có hoạt động đọc

lá cờ in

Thông thường, Nhân Linux sẽ xóa bộ đệm ghi nếu vượt quá giới hạn thời gian đã chỉ định hoặc bộ đệm đầy. Điều này dẫn đến việc bị đình trệ với ổ cứng vì quá trình ghi khiến quá trình đọc chậm hơn nhiều.

Đó là lý do tại sao tôi muốn tránh xóa bộ đệm ghi nếu chỉ có một chút hoạt động đọc. Vì tôi có 40 GB RAM nên đây không phải là vấn đề. Suy nghĩ của tôi về điều đó sẽ là đặt giới hạn thời gian thành năm phút, điều chỉnh kích thước bộ đệm ghi theo nhu cầu của bạn và viết một tập lệnh CHỈ xóa bộ đệm nếu có 0 hoạt động đọc. Tôi không biết làm thế nào, lệnh shell sẽ đồng bộ hóa cung cấp hiệu suất đủ tốt?

Mục tiêu của tôi là có bộ đệm ghi với kích thước như 1, 2 GB. Việc xả nước này sẽ mất nhiều thời gian. Có bất cứ điều gì có thể dừng lại ngay khi có hoạt động đọc lại hoặc PSI đĩa cao hơn (liệu điều đó có phản ứng đủ nhanh không ??)

Tôi có hai ổ đĩa Seagate (không phải smr?): ST1000DM010-2EP102 - nhưng tôi đoán thông tin đó là không cần thiết.

Với dirty_ratio Tôi hiện đang đặt kích thước bộ đệm động.

tiếng vang 360000 > /proc/sys/vm/dirty_expire_centisecs
tiếng vang 360000 > /proc/sys/vm/dirty_writeback_centisecs

Điều này sẽ đặt thời gian tối đa để bắt đầu xóa bộ đệm ghi thành 1 giờ.

Thẩm quyền giải quyết: https://unix.stackexchange.com/questions/30286/can-i-configure-my-linux-system-for-more-aggressive-file-system-caching

Các lệnh hữu ích:

Với lệnh sau, bạn có thể thấy có bao nhiêu trong bộ đệm ghi:

mèo /proc/meminfo | grep Bẩn thỉu

Đầu ra:

Bẩn: 104 kB

Nhưng điều này không quan trọng lắm..

Tôi đang mắc kẹt ở đâu?

Tôi muốn có thể hủy gần như ngay lập tức lệnh đồng bộ hóa (điều này thậm chí có thể thực hiện được không) và tôi muốn biết liệu có quá trình đọc hay không. Đó là tất cả những gì tôi cần để viết kịch bản.

Tôi đã tìm thấy một tập lệnh cũ có thể giám sát hoạt động đọc: awk '{in $1}' /sys/block/sdb/stat

Làm thế nào để sử dụng cái này?

nếu [ $old-value -lt $new-value ];thì LỆNH;fi
france1 avatar
lá cờ in
Kích thước bộ đệm ghi liên tục hay phần trăm tốt hơn?
lá cờ jp
Điều này có trả lời câu hỏi của bạn không? [Giới hạn xóa nền Linux (trang bẩn)](https://serverfault.com/questions/126413/limit-linux-background-flush-dirty-pages)
france1 avatar
lá cờ in
Không. Tôi đã xem bài đăng này nhưng họ muốn đặt bộ đệm ghi càng thấp càng tốt, đó không phải là điều giúp cải thiện hiệu suất trên hdds.
france1 avatar
lá cờ in
https://www.kernel.org/doc/html/latest/block/stat.html - sử dụng cho/sys/block/sdb/stat
Điểm:0
lá cờ in

Nguồn được sử dụng: https://askubuntu.com/questions/184204/how-do-i-fetch-only-numbers-in-grep https://www.kernel.org/doc/html/latest/block/stat.html https://askubuntu.com/questions/184204/how-do-i-fetch-only-numbers-in-grep

kịch bản mà tôi đã mã hóa:

#!/bin/bash                                                                                                                                                                                                

oldreads=0
bị giết = Đúng
trong khi (đúng)
làm
    reads=`awk '{print $1}' /sys/block/sdb/stat`
    nếu [ "$oldreads" == "$reads" ]
    sau đó
        if [ $(grep -o '[[:digit:]]*'<<<$(cat /proc/meminfo | grep Dirty)) -gt 10240 ]
        sau đó
            lặp lại "đồng bộ hóa"
            đồng bộ hóa&
            syncPid="$!"
            oldreads="$reads"
            bị giết = Sai
        khác
            echo "Không có nhiều hơn 10 MB trong bộ đệm ghi, không đồng bộ."
        fi
    yêu tinh [ $killed == False ]
    sau đó
         tiếng vang "giết"
         giết "$ syncPid"
         bị giết = Đúng
    khác
        echo "$oldreads => $reads"
        oldreads="$reads"
    fi
    ngủ 1
xong
france1 avatar
lá cờ in
Tôi không chắc liệu lệnh đồng bộ hóa có thực sự dừng w/SIGINT hay không :(
lá cờ in
Đây có phải là giải pháp của bạn hay chỉ là thứ bạn đã thử nhưng vẫn không hoạt động?
lá cờ jp
giết `sync` sẽ không làm gì cả.
france1 avatar
lá cờ in
Nó hoạt động nhưng như @AlexD đã nói, tắt đồng bộ hóa không hoạt động. Tôi có thể sử dụng thứ gì khác phản ứng với tín hiệu 15 không?

Đă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.