Shmpages trong điều khoản laymans là gì?


7

Chính xác là gì shmpagestrong sơ đồ lớn của thuật ngữ kernel và bộ nhớ. Nếu tôi đạt đến một shmpagesgiới hạn, điều đó có nghĩa là gì?

Tôi cũng tò mò nếu điều này áp dụng cho nhiều hơn linux

Câu trả lời:


11

Các quy trình chế độ người dùng có thể sử dụng Giao tiếp liên tiến trình (IPC) để liên lạc với nhau, phương pháp nhanh nhất để đạt được điều này là sử dụng các trang bộ nhớ dùng chung ( shmpages).
Điều này xảy ra ví dụ nếu phát bansheenhạc và vlcphát video, cả hai quá trình phải truy cập pulseaudiođể phát ra một số âm thanh.

Cố gắng tìm hiểu thêm về cấu hình và cách sử dụng bộ nhớ dùng chung với một số lệnh sau:

Hiển thị cấu hình bộ nhớ dùng chung:

sysctl kernel.shm{max,all,mni}

Theo mặc định (Linux 2.6), điều này sẽ xuất ra:

kernel.shmmax = 33554432
kernel.shmall = 2097152
kernel.shmmni = 4096

shmmnilà số lượng phân đoạn bộ nhớ chia sẻ được phép tối đa, shmmaxlà kích thước được phép của phân khúc bộ nhớ dùng chung (32 MB) và shmalllà tổng kích thước tối đa của tất cả các phân đoạn (được hiển thị dưới dạng trang, dịch thành 8 GB)

Bộ nhớ dùng chung hiện đang được sử dụng:

grep Shmem /proc/meminfo

Nếu được bật bởi phân phối:

ls -l /dev/shm

ipcs là một công cụ tuyệt vời để tìm hiểu thêm về việc sử dụng IPC:

ipcs -m 

sẽ xuất mức sử dụng bộ nhớ dùng chung, bạn có thể thấy các phân đoạn được phân bổ với kích thước tương ứng.

ipcs -m -i <shmid>

hiển thị thêm thông tin về một phân đoạn được chỉ định, bao gồm cả PID của quá trình tạo (cpid) và cuối cùng (lpid) bằng cách sử dụng nó.

ipcrmcó thể xóa các phân đoạn bộ nhớ được chia sẻ (nhưng lưu ý rằng những phân đoạn đó chỉ bị xóa nếu không có quá trình nào khác được gắn vào chúng, xem cột nattach trong ipcs -m).

ipcrm -m <shmid>

Hết bộ nhớ dùng chung có thể là một chương trình sử dụng nhiều bộ nhớ dùng chung, một chương trình không tách rời các phân đoạn được phân bổ hợp lý, sysctlcác giá trị được sửa đổi , ...

Đây không phải là Linux cụ thể và cũng áp dụng cho (hầu hết) các hệ thống UNIX (bộ nhớ dùng chung xuất hiện lần đầu tiên trong CB UNIX ).


Thay vào đó, hãy sử dụng lệnh này để tìm bộ nhớ dùng chung hiện đang được sử dụng: grep Shmem /proc/meminfoĐiều này ngăn UUC (Sử dụng mèo vô dụng ...)
Mei

Wow, câu trả lời chi tiết tuyệt vời, rất nhiều viên đá quý nhỏ ở đây: D
Gearoid Murphy

vậy shmpagesso với kernel.shm{max,all,mni}cái gì?
dùng278844
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.