it-swarm-vi.tech

Có bao nhiêu Công tắc bối cảnh là "bình thường" (như một chức năng của lõi CPU (hoặc khác))?

Xin chào Linux/UNIX Overlords,

Có ai trong số các bạn có một quy tắc về việc có bao nhiêu công tắc ngữ cảnh (trên mỗi lõi bộ xử lý) là Bình thường trên máy chủ Linux không?

Trường đại học của tôi ở đây đã mang nó lên, và anh ấy nhìn thấy 16K trên 8 lõi x86_64 máy móc.

Dưới đây là một số số liệu thống kê từ sarface trong vài ngày qua ...

văn bản thay thế http://src.autonomy.net.au/imagebin/81895e338fae67d3d205c09db44a81e6-Picture_10.png

Và để xem các thống kê tạo quy trình, đây là chế độ xem logarit của cùng một biểu đồ ...

văn bản thay thế http://src.autonomy.net.au/imagebin/7481f7e52bead4effc90248fc23c72fe-Picture_11.png

Và 8 nhân chán đến chết ...

văn bản thay thế http://src.autonomy.net.au/imagebin/0e94326652e977fd74edcd840f94200f-Picture_12.png

CS vs IOwait (tỷ lệ x10000)

văn bản thay thế http://src.autonomy.net.au/imagebin/a52a2a8a120394849c0da4045933e306-Picture_13.png

Thêm thông tin vô ích trong trường hợp bất cứ ai hỏi ..

  • Dung lượng lưu trữ mà máy chủ hoạt động là 0,5TB SAN qua FC
  • Có 8GB RAM, chủ yếu là bộ nhớ cache - không trao đổi.
37
Xerxes

Điều này phụ thuộc rất nhiều vào loại ứng dụng bạn chạy. Nếu bạn đã có các ứng dụng là các tòa nhà WRT rất kích hoạt, bạn có thể thấy sẽ có lượng chuyển đổi ngữ cảnh cao. Nếu hầu hết các ứng dụng của bạn không hoạt động và chỉ thức dậy khi có thứ gì đó xảy ra trên một ổ cắm, bạn có thể thấy tốc độ chuyển đổi ngữ cảnh thấp.

Các cuộc gọi hệ thống

Các cuộc gọi hệ thống gây ra chuyển đổi ngữ cảnh bởi bản chất rất riêng của chúng. Khi một quá trình thực hiện một cuộc gọi hệ thống, về cơ bản, nó sẽ cho hạt nhân tiếp quản từ thời điểm hiện tại và bộ nhớ để thực hiện công việc mà quá trình không có đặc quyền thực hiện và quay trở lại cùng một vị trí khi nó hoàn thành.

Khi chúng ta xem xét định nghĩa của tòa nhà viết (2) từ Linux, điều này trở nên rất rõ ràng:

[.__.] TÊN [.__.] Ghi - ghi vào phần mô tả tệp [.__.] [.__.] SYNOPSIS [.__.] #Include [.__.] [.__.] Ssize_t write (int fd, const void * buf, size_t Count); [.__.] [.__.] MÔ TẢ [.__.] write () ghi lên để đếm byte từ bộ đệm được chỉ ra buf vào tệp [.__.] bởi các mô tả tập tin fd. [..] [.__.] [.__.] TRẢ LẠI GIÁ TRỊ [.__.] Khi thành công, số byte được ghi được trả về (không cho biết [.__.] Không có gì được viết). Khi có lỗi, -1 được trả về và errno được đặt [.__.] Một cách thích hợp. [.__.] [..] [.__.]

Điều này về cơ bản cho hạt nhân tiếp quản hoạt động từ quá trình, di chuyển lên count byte, bắt đầu từ địa chỉ bộ nhớ được trỏ bởi *buf để mô tả tệp fd của quy trình hiện tại và sau đó quay lại quy trình và cho anh ta biết nó đã diễn ra như thế nào.

Một ví dụ điển hình cho thấy đây là máy chủ trò chơi dành riêng cho các trò chơi dựa trên Valve Source, hlds . http://nopaste.narf.at/f1b22dbc9 hiển thị một tòa nhà có giá trị thứ hai được thực hiện bởi một phiên bản duy nhất của máy chủ trò chơi không có người chơi trên đó. Quá trình này mất khoảng 3% thời gian CPU trên Xeon X3220 (2.4Ghz), chỉ để mang lại cho bạn cảm giác về việc nó đắt như thế nào.

Đa tác vụ

Một nguồn chuyển đổi ngữ cảnh khác có thể là các quy trình không tạo ra các tòa nhà, nhưng cần phải loại bỏ một CPU nhất định để nhường chỗ cho các quy trình khác.

Một cách hay để hình dung điều này là cpuburn . cpuburn không tự làm bất kỳ tòa nhà nào, nó chỉ lặp đi lặp lại trên bộ nhớ của chính nó, vì vậy nó không gây ra bất kỳ chuyển đổi ngữ cảnh nào.

Lấy một máy nhàn rỗi, khởi động vmstat và sau đó chạy burnMMX (hoặc bất kỳ thử nghiệm khác từ gói cpuburn) cho mọi lõi CPU mà hệ thống có. Bạn nên sử dụng toàn bộ hệ thống trước đó nhưng hầu như không tăng chuyển đổi ngữ cảnh. Sau đó cố gắng bắt đầu một vài quá trình. Bạn sẽ thấy tốc độ chuyển đổi ngữ cảnh tăng lên khi các tiến trình bắt đầu cạnh tranh trên các lõi CPU. Lượng chuyển đổi phụ thuộc vào tỷ lệ quy trình/lõi và độ phân giải đa nhiệm của hạt nhân của bạn.

Đọc thêm

linfo.org có một bài viết hay về những gì chuyển đổi ngữ cảnhcác cuộc gọi hệ thống là. Wikipedia có thông tin chung và bộ sưu tập liên kết Nice về các cuộc gọi hệ thống.

26
Michael Renner

máy chủ web được tải vừa phải của tôi nằm ở khoảng 100-150 chuyển một phần lớn thời gian thứ hai với đỉnh điểm thành hàng ngàn.

Tỷ lệ chuyển đổi ngữ cảnh cao không phải là một vấn đề, nhưng chúng có thể chỉ ra một vấn đề quan trọng hơn.

chỉnh sửa: Chuyển mạch ngữ cảnh là một triệu chứng, không phải là một nguyên nhân. Bạn đang cố gắng chạy gì trên máy chủ? Nếu bạn có máy đa bộ xử lý, bạn có thể muốn thử thiết lập mối quan hệ cpu cho các quy trình máy chủ chính của mình.

Ngoài ra, nếu bạn đang chạy X, hãy thử thả xuống chế độ bảng điều khiển.

chỉnh sửa lại: ở mức 16k cs mỗi giây, mỗi cpu trung bình hai công tắc mỗi mili giây - tức là một nửa đến một phần sáu thời gian bình thường. Anh ta có thể chạy rất nhiều IO chủ đề bị ràng buộc không?

chỉnh sửa lại bài viết đồ thị: Chắc chắn có vẻ IO bị ràng buộc. Hệ thống có dành phần lớn thời gian của nó trong SYS khi các công tắc ngữ cảnh cao không?

chỉnh sửa một lần nữa: iowait cao và hệ thống trong biểu đồ cuối cùng đó - làm lu mờ hoàn toàn không gian người dùng. Bạn có IO vấn đề.
[.___.] Bạn đang sử dụng thẻ FC nào?

chỉnh sửa: hmmm. bất kỳ cơ hội nào để có được một số điểm chuẩn sẽ xảy ra với quyền truy cập SAN của bạn với bonnie ++ hoặc dbench trong thời gian chết? Tôi sẽ quan tâm xem liệu chúng có kết quả tương tự không.

chỉnh sửa: Đã suy nghĩ về điều này vào cuối tuần và tôi đã thấy những cú đánh sử dụng tương tự khi bonnie đang thực hiện "ghi một byte tại một thời điểm". Điều đó có thể giải thích số lượng lớn chuyển đổi đang diễn ra, vì mỗi lần viết sẽ yêu cầu một tòa nhà riêng biệt.

7
jay_dubya

Những thứ như thế này là lý do tại sao bạn nên thử và giữ đường cơ sở hiệu suất cho máy chủ của mình. Bằng cách đó, bạn có thể so sánh những điều bạn nhận thấy bất ngờ với những điều bạn đã ghi lại trong quá khứ.

Điều đó nói rằng, tôi có các máy chủ đang chạy (chủ yếu là các máy chủ Oracle không bận rộn), ổn định khoảng 2k với một số đỉnh 4k. Đối với máy chủ của tôi, điều đó là bình thường, đối với các máy chủ của người khác có thể quá thấp hoặc quá cao.

Bạn có thể quay lại dữ liệu bao xa?

Những loại thông tin CPU bạn có thể cung cấp cho chúng tôi?

1
wzzrd

Tôi thiên về mối quan tâm về tỷ lệ chiếm dụng CPU của trạng thái hệ thống. Nếu nó gần 10% hoặc cao hơn, điều đó có nghĩa là hệ điều hành của bạn đang dành quá nhiều thời gian để thực hiện các chuyển đổi ngữ cảnh. Mặc dù việc di chuyển một số quy trình sang một máy khác là nhiề chậm hơn, nó xứng đáng để làm điều đó.

1
hashei

Không có quy tắc của ngón tay cái. Một chuyển đổi ngữ cảnh chỉ là CPU chuyển từ xử lý một luồng sang một luồng khác. Nếu bạn chạy nhiều quy trình (hoặc một vài quy trình có luồng cao), bạn sẽ thấy nhiều công tắc hơn. May mắn thay, bạn không cần phải lo lắng về việc có bao nhiêu chuyển đổi ngữ cảnh - chi phí là nhỏ và ít nhiều không thể tránh khỏi.

0
Alex J