Linux đặt các giá trị mặc định cho SHMMAX ở đâu?


10

Tôi chỉ tự hỏi những giá trị này đang được đặt ở đâu và chúng mặc định là gì? Của tôi hiện tại là 18446744073692774399. Tôi đã không đặt nó ở bất cứ đâu mà tôi có thể nhìn thấy.

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399

Câu trả lời:


9

Các __initchức năng ipc_ns_initđặt giá trị ban đầu của shmmaxbằng cách gọi shm_init_ns, đặt nó vào giá trị của SHMMAXvĩ mô.

Định nghĩa của SHMMAXlà trong <uapi/linux/shm.h>:

#define SHMMAX (ULONG_MAX - (1UL << 24)) /* max shared seg size (bytes) */

Trên các máy 64 bit, định nghĩa đó bằng với giá trị bạn tìm thấy , 18446744073692774399.


1

Khi đang di chuyển, bạn chỉ có thể lặp lại vào / Proc / sys / kernel / shmmax!

# echo 20446744073692774399 > /proc/sys/kernel/shmmax

Nhưng hầu hết mọi người chỉnh sửa /etc/sysctl.conf bằng một dòng tương tự như:

kernel.shmmax=your_new_value_here

Xem trang người đàn ông sysctl (8).


Đó không phải là câu hỏi. Mặc định được đặt ở đâu? Đó là, nếu bạn không viết thư cho shmmax, nó mặc định là gì?
Evan Carroll

2
Trên một số bản phân phối Linux (RHEL 5 & 6 tôi tin là một), nó được đặt trong /etc/sysctl.conf. Nhưng tôi nghĩ mặc định được đặt trong mã hạt nhân đến giới hạn lý thuyết (đoán đó là 2 ^ 64 - 1?).
Deathgrip
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.