Kể từ Linux kernel 2.6,35, bạn có thể tăng kích thước của một đường ống với F_SETPIPE_SZ
fnctl (). Người dùng không có đặc quyền bị giới hạn ở các giá trị từ 0 đến giá trị hiện tại của fs.pipe-max-size
sysctl
(1 MiB theo mặc định).
Giá trị bạn sử dụng phải lớn hơn 64 KiB và là lũy thừa 2.
Vì vậy, bạn có thể làm:
perl -MFcntl -e 'fcntl(STDIN, 1031, 1048576) or die $!' <> /dev/xconsole
(ở đây với F_SETPIPE_SZ được mã hóa thành giá trị của nó trên hệ thống của tôi vì phiên bản dành riêng cho Linux fcntl()
không có sẵn cho phiên bản của tôi perl
).
Lưu ý rằng điều fcntl()
đó không ảnh hưởng /dev/xconsole
nhưng bộ đệm ống đã được khởi tạo khi /dev/xconsole
mở (bởi syslog
và bất kỳ ứng dụng nào đang đọc tin nhắn ở đầu kia, vì vậy bạn cần thực hiện nó ở mỗi lần khởi động sau khi syslog được khởi động).
Bây giờ, cho dù đó là những gì bạn nên làm là một vấn đề khác. ống là cơ chế truyền thông liên quá trình. Chúng không có nghĩa là để lưu trữ dữ liệu. Đối với các mục nhật ký hệ thống, 64 KiB là quá đủ vì các đơn đặt hàng có cường độ lớn hơn mục nhập nhật ký thông thường của bạn.
Nhiều khả năng trong trường hợp của bạn, bạn đã gặp vấn đề ở chỗ ứng dụng đọc từ /dev/xconsole
không được bắt đầu đủ sớm hoặc không đọc đủ nhanh.
Trong mọi trường hợp, tôi sẽ khuyên không nên thay đổi kích thước ống mặc định toàn cầu.
Điều đó sẽ được thực hiện bằng cách thay đổi:
#define PIPE_DEF_BUFFERS 16
(thể hiện bằng số lượng 4 trang KiB) cho một cái gì đó khác trong include/linux/pipe_fs_i.h
. Không phải là không thể sửa đổi những thứ khác để phản ánh sự thay đổi hoặc sự thay đổi đó sẽ ảnh hưởng đến những thứ khác theo những cách không ngờ tới.
Nếu bạn biến nó thành sức mạnh của 2 là> = 16, nó sẽ ít có khả năng phá vỡ mọi thứ, nhưng hãy cẩn thận, nó có thể ảnh hưởng đáng kể đến hiệu suất hệ thống toàn cầu và đặc biệt là hành vi lập lịch.
/dev/xconsole
không? Tôi không có nghĩa là kích thước giới hạn bộ đệm (tức là 64KB). Tôi có nghĩa là bao nhiêu của bộ đệm đó được lấp đầy. Bằng cách đó, tôi có thể sử dụngdd
để trống/dev/xconsole
ngay từ đầu để loại bỏ các nhật ký khởi động sớm mà tôi không quan tâm.