Tôi muốn biết liệu đầu ra của linux dựa trên Red-Hat có thể được diễn giải khác nhau bởi linux dựa trên Debian.
Để làm cho câu hỏi trở nên cụ thể hơn, những gì tôi đang theo dõi, là hiểu cách "tải trung bình" từ dòng đầu tiên của top
hệ thống Red-Hat được diễn giải và cách xác minh điều này bằng mã ro tài liệu chính thức.
[Có nhiều cách để tiếp cận chủ đề này, tất cả đều là câu trả lời chấp nhận được cho câu hỏi]
Một cách tiếp cận tiềm năng, sẽ là tìm nơi thông tin này được ghi lại chính thức.
Một số khác, sẽ là tìm phiên bản mã top
được xây dựng từ bản phân phối và phiên bản cụ thể mà tôi đang làm việc.
Đầu ra lệnh tôi nhận được là:
top - 13:08:34 up 1:19, 2 users, load average: 0.02, 0.00, 0.00
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 96.8%id, 2.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3922520k total, 788956k used, 3133564k free, 120720k buffers
Swap: 2097148k total, 0k used, 2097148k free, 344216k cached
Trong trường hợp này làm thế nào tôi có thể giải thích giá trị trung bình tải ?
Tôi đã quản lý để xác định rằng tải trung bình là khoảng phút cuối cùng, từ một nguồn tài liệu và nó sẽ được giải thích sau khi được nhân với 100, bởi một nguồn tài liệu khác.
Vì vậy, câu hỏi là:
Nó được tải 0,02% hay 2%?
Nguồn tài liệu và phiên bản:
1) Ngôi sao đầu tiên với
TOP(1) Linux User’s Manual TOP(1)
NAME
top - display Linux tasks
Nguồn: man top
trong bản phân phối RedHat của tôi,
Ubuntu cũng có phiên bản với "tác vụ" không giải thích mức trung bình tải trong: http :
//manpages.ub Ubuntu.com/manpages/precise/man1/top.1.html
2) Cái thứ hai bắt đầu bằng
TOP(1) User Commands TOP(1)
NAME top
top - display Linux processes
Nguồn:
http://man7.org/linux/man-pages/man1/top.1.htm
3) Cái này bắt đầu bằng:
TOP(1)
NAME
top - display and update information about the top cpu processes
Nguồn: http://www.unixtop.org/man.shtml
Cái đầu tiên , có thể được nhìn thấy man top
trong RHEL
hoặc trong online ubuntu documentation
và nó không có bất kỳ lời giải thích nào cho định dạng đầu ra (cũng như về mức trung bình tải mà tôi quan tâm) .
Điều thứ hai , chứa một lời giải thích ngắn gọn, chỉ ra rằng trung bình tải phải làm trong 1 phút cuối cùng, nhưng không có gì về việc giải thích giá trị của nó!
Tôi trích dẫn trực tiếp từ nguồn thứ hai:
2a. Trung bình UPTIME và LOAD
Phần này bao gồm một dòng duy nhất chứa:
tên chương trình hoặc cửa sổ, tùy thuộc vào
thời gian hiện tại của chế độ hiển thị và thời gian kể từ khi
tổng số lần khởi động cuối cùng của
hệ thống người dùng tải trong 1, 5 và 15 phút qua
Vì vậy, nếu lời giải thích này thực sự chính xác, chỉ cần hiểu rằng trung bình tải là khoảng 1 phút cuối.
Nhưng nó không giải thích định dạng của số.
Trong giải thích thứ ba , nó nói rằng:
Khi chỉ định số cho trung bình tải, chúng nên được nhân với 100.
Giải thích này cho thấy 0,02 có nghĩa là 2% chứ không phải 0,02%. Nhưng điều này có đúng không? Ngoài ra, nó có đúng cho tất cả các bản phân phối của linux và có khả năng triển khai khác nhau top
không?
Để tìm câu trả lời cho câu hỏi này, tôi đã cố gắng duyệt mã bằng cách tìm kiếm trực tuyến. Nhưng tôi đã tìm thấy, ít nhất, hai phiên bản khác nhau top
liên quan đến RHEL ngoài kia! các builtin-top.c
và refactored top.c
. Cả hai đều có bản quyền của Red-Hat như thông báo nói ở phần đầu của mã và do đó có vẻ hợp lý khi RHEL sử dụng một trong số này.
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perf/util/top.c
Vì vậy, trước khi đào sâu vào mã đó, tôi muốn có ý kiến về nơi tập trung để hình thành một sự hiểu biết chính xác về cách tải cpu được diễn giải?
Từ thông tin được đưa ra trong các câu trả lời dưới đây, ngoài một số tìm kiếm cá nhân, tôi đã thấy rằng:
1 - Cái top
tôi đang sử dụng được chứa trong gói Procps-3.2.8. Mà có thể được xác minh bằng cách sử dụng top -v
.
2 - Trong phiên bản procps-3.2.8
mà tôi đã tải xuống từ trang web chính thức, có vẻ như công cụ uptime
lấy thông tin từ procfs
tệp /proc/loadavg
trực tiếp (không sử dụng chức năng linux getloadavg()
).
3 - Bây giờ đối với top
lệnh nó cũng không sử dụng chức năng getloadavg()
. Tôi quản lý để xác minh rằng top
thực sự những điều tương tự nhưuptime
công cụ để hiển thị trung bình tải. Nó thực sự gọi uptime
chức năng của công cụ, lấy thông tin từ procfs
tệp /proc/loadavg
.
Vì vậy, mọi thứ đều chỉ vào /proc/loadavg
tập tin! Do đó, để hình thành một sự hiểu biết chính xác về load average
sản xuất bởi top
, người ta phải đọc mã hạt nhân để xem cách tập tin loadavg
được viết.
Ngoài ra còn có một bài viết xuất sắc được chỉ ra trong một trong những câu trả lời cung cấp giải thích thuật ngữ của một giáo dân về ba giá trị của loadavg
.
Vì vậy, mặc dù thực tế là tất cả các câu trả lời đều hữu ích và hữu ích như nhau, tôi sẽ đánh dấu câu trả lời cho bài viết
http://www.linuxjournal.com//article/9001 là "câu trả lời" cho câu hỏi của tôi. Cảm ơn tất cả sự đóng góp của bạn!
Ngoài ra từ câu hỏi Tìm hiểu trung bình hàng đầu và tải trung bình , tôi đã tìm thấy một liên kết đến mã nguồn của hạt nhân trỏ đến vị trí loadavg
được tính toán. Vì có vẻ như có một bình luận rất lớn giải thích cách thức hoạt động của nó, cũng là phần này của mã C
!
Liên kết đến mã là http://lxr.free-electrons.com/source/kernel/sched/loadavg.c
Một lần nữa tôi không cố gắng tham gia vào bất kỳ hình thức đạo văn nào, tôi chỉ thêm điều này cho đầy đủ. Vì vậy, tôi nhắc lại rằng liên kết đến mã hạt nhân được tìm thấy từ một trong những câu trả lời trong Tìm hiểu trung bình hàng đầu và tải ...
top -v
)