Làm thế nào để hiểu mức sử dụng bộ nhớ và tải trung bình trong máy chủ linux


57

Tôi đang sử dụng máy chủ linux có bộ nhớ 128GB và 24 lõi. Tôi sử dụng hàng đầu để xem nó được sử dụng bao nhiêu. Đầu ra của nó được dán vào cuối bài. Đây là hai câu hỏi:

(1) Tôi thấy rằng mỗi quy trình đang chạy chiếm một tỷ lệ bộ nhớ rất nhỏ (% MEM không quá 0,2% và hầu hết chỉ là 0,0%), nhưng tổng số bộ nhớ gần như được sử dụng như trong dòng đầu ra thứ tư ( "Tổng cộng: Mem: 130766620k, 130161072k đã sử dụng, 605548k miễn phí, bộ đệm 919300k")? Tổng tỷ lệ phần trăm bộ nhớ được sử dụng trong tất cả các quy trình dường như không thể đạt được gần như 100%, phải không?

(2) làm thế nào để hiểu trung bình tải trên dòng đầu tiên ("trung bình tải: 14.04, 14.02, 14.00")?

Cảm ơn và trân trọng!

Biên tập:

Cảm ơn!

Tôi cũng thực sự muốn nghe một số số thô dựa trên tỷ lệ phần trăm bộ nhớ đã sử dụng để xác định xem máy chủ có bị tải nặng không, vì tôi đã từng trở thành người định hình máy chủ mà không hiểu về tải hiện tại.

Là trao đổi được coi là gần giống như bộ nhớ? Ví dụ: khi bộ nhớ và trao đổi gần như có cùng kích thước, nếu bộ nhớ gần hết nhưng trao đổi vẫn phần lớn miễn phí, tôi có thể xem nó như thể tỷ lệ bộ nhớ đã sử dụng + trao đổi vẫn không cao và chạy mới quy trình?

Làm thế nào bạn sẽ xem xét sử dụng CPU hoặc bộ nhớ (hoặc bộ nhớ + trao đổi) cùng nhau? Bạn có trở nên lo lắng nếu một trong hai người đạt đến mức quá cao hoặc cả hai?

Đầu ra của hàng đầu

$ hàng đầu

 
đầu trang - 12:45:33 lên 19 ngày, 23:11, 18 người dùng, tải trung bình: 14.04, 14.02, 14.00
Nhiệm vụ: tổng cộng 484, 12 chạy, 472 ngủ, 0 dừng, 0 zombie
Cpu: 36,7% chúng tôi, 19,7% sy, 0,0% ni, 43,6% id, 0,0% wa, 0,0% hi, 0,0% si, 0,0% st
Mem: tổng 130766620k, sử dụng 130161072k, miễn phí 605548k, bộ đệm 919300k
Hoán đổi: tổng cộng 63111312k, sử dụng 500556k, miễn phí 62610756k, 124437752k được lưu trữ

  NGƯỜI DÙNG PR PR VI VIRT RES SHR S% CPU% MEM TIME + HÀNH
 6529 sanchez 18 -2 1075m 219m 13m S 100 0,2 13760: 23 MATLAB
13210 timothy 18 -2 48336 37m 1216 R 100 0,0 3: 56,75 vô lý
13888 timothy 18 -2 48336 37m 1204 R 100 0,0 2: 04,89 vô lý
14542 timothy 18 -2 48336 37m 1196 R 100 0,0 1: 08,34 vô lý
14544 timothy 18 -2 2888 2076 400 R 100 0,0 1: 06,14 tụ tậpData
 6183 sanchez 18 -2 1133m 195m 13m S 100 0,2 13676: 04 MATLAB
 6795 sanchez 18 -2 1079m 210m 13m S 100 0,2 13734: 26 MATLAB
10178 timothy 18 -2 48336 37m 1204 R 100 0,0 11: 33,93 vô lý 
12438 timothy 18 -2 48336 37m 1216 R 100 0,0 5: 38,17 vô lý
13661 timothy 18 -2 48336 37m 1216 R 100 0,0 2: 44,13 vô lý
14098 timothy 18 -2 48336 37m 1204 R 100 0,0 1: 58,31 vô lý
14335 timothy 18 -2 48336 37m 1196 R 100 0,0 1: 08.93 vô lý
14765 timothy 18 -2 48336 37m 1196 R 99 0,0 0: 32,57 vô lý
13445 timothy 18 -2 48336 37m 1216 R 99 0,0 3: 01,37 vô lý
28990 gốc 20 0 0 0 0 S 2 0,0 65: 50,21 pdflush
12141 tim 18 -2 19380 1660 1024 R 1 0,0 0: 04.04 hàng đầu
 1240 gốc 15 -5 0 0 0 S 0 0,0 16: 07.11 kjournald
 9019 gốc 20 0 296m 4460 2616 S 0 0,0 82: 19,51 kdm_greet
    1 gốc 20 0 4028 728 592 S 0 0,0 0: 03.11 init
    2 gốc 15 -5 0 0 0 S 0 0,0 0: 00.00 kthreadd
    3 gốc RT -5 0 0 0 S 0 0,0 0: 01,01 di chuyển / 0
    4 gốc 15 -5 0 0 0 S 0 0,0 0: 08,13 ksoftirqd / 0
    5 gốc RT -5 0 0 0 S 0 0,0 0: 00.00 theo dõi / 0
    6 gốc RT -5 0 0 0 S 0 0,0 17: 27,31 di chuyển / 1
    7 gốc 15 -5 0 0 0 S 0 0,0 0: 01,21 ksoftirqd / 1
    8 gốc RT -5 0 0 0 S 0 0,0 0: 00.00 cơ quan giám sát / 1
    9 gốc RT -5 0 0 0 S 0 0,0 10: 02,56 di chuyển / 2
   10 gốc 15 -5 0 0 0 S 0 0,0 0: 00,34 ksoftirqd / 2
   11 gốc RT -5 0 0 0 S 0 0,0 0: 00.00 theo dõi / 2
   12 gốc RT -5 0 0 0 S 0 0,0 4: 29,53 di chuyển / 3
   13 gốc 15 -5 0 0 0 S 0 0,0 0: 00,34 ksoftirqd / 3

2
Xem điều này để có một câu trả lời tốt về bộ nhớ. serverfault.com/questions/38065/#38074
Zoredache

câu trả lời này cho một bản tóm tắt nhanh về trung bình tải (hoặc đọc dài này để biết chi tiết).
Nickolay

Câu trả lời:


56

(1) Tôi thấy rằng mỗi quy trình đang chạy chiếm một tỷ lệ bộ nhớ rất nhỏ (% MEM không quá 0,2% và hầu hết chỉ là 0,0%), nhưng tổng số bộ nhớ gần như được sử dụng như trong dòng đầu ra thứ tư ( "Tổng cộng: Mem: 130766620k, 130161072k đã sử dụng, 605548k miễn phí, bộ đệm 919300k")? Tổng tỷ lệ phần trăm bộ nhớ được sử dụng trong tất cả các quy trình dường như không thể đạt được gần như 100%, phải không?

Để xem bạn hiện đang sử dụng bao nhiêu bộ nhớ, hãy chạy free -m. Nó sẽ cung cấp đầu ra như:

             tổng số bộ đệm chia sẻ miễn phí được sử dụng lưu trữ
Mem: 2012 1923 88 0 91 515
- / + bộ đệm / bộ đệm: 1316 695
Hoán đổi: 3153 256 2896

Giá trị hàng 'được sử dụng' (1923) trên cùng sẽ gần như luôn luôn khớp với giá trị mem hàng trên cùng (2012). Vì Linux thích sử dụng bất kỳ bộ nhớ dự phòng nào để lưu trữ các khối đĩa (515).

Con số được sử dụng để xem xét là giá trị bộ đệm / bộ đệm được sử dụng (1316). Đây là dung lượng mà các ứng dụng của bạn hiện đang sử dụng. Để có hiệu suất tốt nhất, con số này phải nhỏ hơn tổng bộ nhớ (2012) của bạn. Để tránh lỗi bộ nhớ, nó cần nhỏ hơn tổng bộ nhớ (2012) và dung lượng trao đổi (3153).

Nếu bạn muốn nhanh chóng xem có bao nhiêu bộ nhớ miễn phí, hãy xem giá trị miễn phí của bộ đệm / bộ đệm (695). Đây là tổng bộ nhớ (2012) - thực tế được sử dụng (1316). (2012 - 1316 = 696, không phải 695, đây sẽ chỉ là vấn đề làm tròn)

(2) làm thế nào để hiểu trung bình tải trên dòng đầu tiên ("trung bình tải: 14.04, 14.02, 14.00")?

Bài viết này về tải trung bình sử dụng một tương tự lưu lượng tốt và là bài tốt nhất tôi đã tìm thấy cho đến nay: Tìm hiểu về tải CPU của Linux - khi nào bạn nên lo lắng? . Trong trường hợp của bạn, như mọi người đã chỉ ra:

Trên hệ thống đa bộ xử lý, tải có liên quan đến số lượng lõi xử lý có sẵn. Dấu hiệu "sử dụng 100%" là 1,00 trên hệ thống lõi đơn, 2,00, trên lõi kép, 4,00 trên lõi tứ, v.v.

Vì vậy, với mức tải trung bình là 14,00 và 24 lõi, máy chủ của bạn sẽ không bị quá tải.


17

Unix giống như các hệ thống, bao gồm cả linux, được thiết kế để sử dụng hiệu quả nhất RAM có sẵn. Nói một cách chung chung, có 3 trạng thái mỗi MB RAM có thể ở:

  1. Miễn phí
  2. Được sử dụng bởi một quá trình
  3. Được sử dụng cho bộ đệm

Trạng thái thứ 3 chỉ được sử dụng làm không gian đầu và dự định sẽ được chỉ định lại bất cứ khi nào cần thiết, tức là tổng bộ nhớ khả dụng của bạn cho các chương trình thực sự là Free + usedforBuffers. Như vậy, bạn sẽ không thực sự thấy không gian được phân bổ bộ đệm hiển thị như được gán cho bất kỳ quy trình cụ thể nào.

Câu hỏi trung bình tải của bạn thú vị hơn một chút, vì nó có thể dễ dàng bị hiểu sai. Đối với câu chuyện đầy đủ xem bài viết linuxjournal này . Tổng kết tốt nhất là một trích dẫn trực tiếp từ bài báo,

Tính toán trung bình tải được coi là trung bình di chuyển của các quy trình trong hàng đợi chạy của Linux được đánh dấu đang chạy hoặc không bị gián đoạn

Có nghĩa là bạn có thể nghĩ trung bình tải của mình là (# của các quy trình đang chạy) + (# các quy trình đang chờ trên IO). Hãy nhớ rằng tại bất kỳ thời điểm nào bạn cũng có thể có số tiến trình $ CORE đang được thực thi, tôi sẽ nói rằng trung bình tải của bạn là 14 là khá thấp.


Cảm ơn! Tỷ lệ phần trăm được sử dụng của bộ nhớ (hoặc bộ nhớ + trao đổi) được coi là tải nặng và tốt hơn là không chạy các quy trình mới? Bạn có nhìn vào cả bộ nhớ hoặc bộ nhớ + trao đổi không? Là hoán đổi được sử dụng được hiển thị trong đầu kích thước trao đổi thực sự được sử dụng? Về tải trung bình của CPU, bạn có đo tải thực tế bằng "tải trung bình / số lõi" không? Bao nhiêu cho nó bạn sẽ coi máy chủ được tải nặng? Cảm ơn và trân trọng!
Tim

2
Tải chỉ là một chỉ số. Theo nguyên tắc chung, tải trọng lớn hơn lõi là một điều xấu. Nói chung một tỷ lệ cao của bộ nhớ được sử dụng là một điều xấu. Đó không phải là một giá trị nhị phân mà bạn có thể nói 'điều này rất tốt'. Nếu bạn hết RAM, bạn không có đủ để chạy nhiều quy trình hơn. Nếu bạn không chạy ra ngoài, bạn đã có rất nhiều. Nó phụ thuộc rất nhiều vào chi tiết cụ thể về tình huống của bạn.
Cian

4

Từ sartrang người đàn ông:

       Trung bình tải được tính bằng số lần chạy trung bình hoặc 
       các tác vụ đang chạy (trạng thái R) và số lượng tác vụ không bị gián đoạn
       ngủ (trạng thái D) trong khoảng thời gian quy định.

Từ uptimetrang người đàn ông:

       Trung bình tải hệ thống là số lượng trung bình của các quá trình
       trong trạng thái runnable hoặc không bị gián đoạn. Một quá trình trong trạng thái runnable
       đang sử dụng CPU hoặc đang chờ sử dụng CPU. Một quá trình trong unin‐
       trạng thái có thể mở rộng đang chờ một số truy cập I / O, ví dụ như chờ đĩa.
       Các trung bình được thực hiện trong ba khoảng thời gian. Tải trung bình
       không được chuẩn hóa cho số lượng CPU trong một hệ thống, do đó, tải trung bình
       tuổi 1 có nghĩa là một hệ thống CPU duy nhất được tải mọi lúc trong khi trên 4
       Hệ thống CPU có nghĩa là nó nhàn rỗi 75% thời gian.

3
  1. Linux, trong một thời gian, bây giờ, đã quản lý bộ nhớ của nó theo cách làm cho dòng đó topvề cơ bản trở nên vô dụng, thường giữ phần lớn bộ nhớ của máy được phân bổ cho các mục đích sử dụng khác nhau khi quy trình người dùng không yêu cầu.
  2. Trung bình tải là số lượng trung bình của các quá trình đang chạy hoặc đang chờ để chạy. Nó thường có mối tương quan ngược chiều mạnh với độ trễ / đáp ứng của hệ thống, vì vậy bạn muốn nó càng thấp càng tốt. Vì mỗi CPU của bạn có thể chạy một cái gì đó tại bất kỳ thời điểm nào, tuy nhiên, bạn dường như đang làm khá tốt ở tuổi 14.

Cảm ơn! Về 1, bạn có nghĩa là một số quy trình không hiển thị trên cùng nhưng đang sử dụng nhiều bộ nhớ? Hoặc là dòng đầu ra thứ tư về bộ nhớ ("Tổng số Mem: 130766620k, 130161072k đã sử dụng, 605548k miễn phí, bộ đệm 919300k") là sai lệch, tôi nên xem tổng số phần trăm bộ nhớ được sử dụng bởi tất cả các quy trình được hiển thị trong đầu và trong trường hợp của tôi Tôi có thể chạy một số quy trình tiêu thụ bộ nhớ mới một cách an toàn không?
Tim

2
Như các câu trả lời khác đã chỉ ra, trung bình tải nên được so sánh với số lượng bộ xử lý, vì vậy 14 không có nhiều trên hệ thống 24 lõi. Nó sẽ giống như 14/24 = 0,58 trên hệ thống lõi đơn (loại tốt).
David Z

@Tim: Ý tôi là cái sau.
hỗn loạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.