← Documents Documentation/admin-guide/sysctl/fs.rst GitHub 원문 ↗

Linux 6.18.37 · Administration

Documentation for /proc/sys/fs/

`/proc/sys/fs`의 AIO, dentry, file·inode, mount, pipe, 링크 보호, core dump, mqueue, epoll, FUSE 한도와 정책을 설명합니다.

Source pathDocumentation/admin-guide/sysctl/fs.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

fs.rst:1-374

이 sysctl들은 파일 시스템 동작뿐 아니라 시스템 전체의 커널 객체 한도와 보안 정책을 바꿉니다. 값의 단위가 요청 수, page, byte, second처럼 서로 다르므로 자동 조정 스크립트에서는 항목별 의미와 `0`의 뜻을 확인해야 합니다.

`protected_*`는 sticky 공유 디렉터리의 TOCTOU 공격을 줄이고, `suid_dumpable`은 권한 프로세스 메모리가 core dump로 노출되는 범위를 정합니다. 운영 환경에서는 보안 의미를 이해하지 않고 완화하지 않는 편이 안전합니다.

영역대표 항목
커널 객체`aio-max-nr`, `file-max`, `nr_open`, `mount-max`
캐시 상태`dentry-state`, `inode-state`
사용자 자원`pipe-user-pages-hard`, `pipe-user-pages-soft`, `max_user_watches`
보안`protected_fifos`, `protected_hardlinks`, `protected_regular`, `protected_symlinks`, `suid_dumpable`
IPC·FUSE`mqueue/*`, `fuse/*`

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 ===============================
2 Documentation for /proc/sys/fs/
3 ===============================
4
5 Copyright (c) 1998, 1999, Rik van Riel <riel@nl.linux.org>
6
7 Copyright (c) 2009, Shen Feng<shen@cn.fujitsu.com>
8
9 For general info and legal blurb, please look in intro.rst.
10
11 ------------------------------------------------------------------------------
12
13 This file contains documentation for the sysctl files and directories
14 in ``/proc/sys/fs/``.
15
16 The files in this directory can be used to tune and monitor
17 miscellaneous and general things in the operation of the Linux
18 kernel. Since some of the files *can* be used to screw up your
19 system, it is advisable to read both documentation and source
20 before actually making adjustments.
21
22 1. /proc/sys/fs
23 ===============
24
25 Currently, these files might (depending on your configuration)
26 show up in ``/proc/sys/fs``:
27
28 .. contents:: :local:
29
30
31 aio-nr & aio-max-nr
32 -------------------
33
34 ``aio-nr`` shows the current system-wide number of asynchronous io
35 requests. ``aio-max-nr`` allows you to change the maximum value
36 ``aio-nr`` can grow to. If ``aio-nr`` reaches ``aio-nr-max`` then
37 ``io_setup`` will fail with ``EAGAIN``. Note that raising
38 ``aio-max-nr`` does not result in the
39 pre-allocation or re-sizing of any kernel data structures.
40
41 dentry-negative
42 ----------------------------
43
44 Policy for negative dentries. Set to 1 to always delete the dentry when a
45 file is removed, and 0 to disable it. By default, this behavior is disabled.
46
47 dentry-state
48 ------------
49
50 This file shows the values in ``struct dentry_stat_t``, as defined in
51 ``fs/dcache.c``::
52
53 struct dentry_stat_t dentry_stat {
54 long nr_dentry;
55 long nr_unused;
56 long age_limit; /* age in seconds */
57 long want_pages; /* pages requested by system */
58 long nr_negative; /* # of unused negative dentries */
59 long dummy; /* Reserved for future use */
60 };
61
62 Dentries are dynamically allocated and deallocated.
63
64 ``nr_dentry`` shows the total number of dentries allocated (active
65 + unused). ``nr_unused shows`` the number of dentries that are not
66 actively used, but are saved in the LRU list for future reuse.
67
68 ``age_limit`` is the age in seconds after which dcache entries
69 can be reclaimed when memory is short and ``want_pages`` is
70 nonzero when ``shrink_dcache_pages()`` has been called and the
71 dcache isn't pruned yet.
72
73 ``nr_negative`` shows the number of unused dentries that are also
74 negative dentries which do not map to any files. Instead,
75 they help speeding up rejection of non-existing files provided
76 by the users.
77
78
79 file-max & file-nr
80 ------------------
81
82 The value in ``file-max`` denotes the maximum number of file-
83 handles that the Linux kernel will allocate. When you get lots
84 of error messages about running out of file handles, you might
85 want to increase this limit.
86
87 Historically,the kernel was able to allocate file handles
88 dynamically, but not to free them again. The three values in
89 ``file-nr`` denote the number of allocated file handles, the number
90 of allocated but unused file handles, and the maximum number of
91 file handles. Linux 2.6 and later always reports 0 as the number of free
92 file handles -- this is not an error, it just means that the
93 number of allocated file handles exactly matches the number of
94 used file handles.
95
96 Attempts to allocate more file descriptors than ``file-max`` are
97 reported with ``printk``, look for::
98
99 VFS: file-max limit <number> reached
100
101 in the kernel logs.
102
103
104 inode-nr & inode-state
105 ----------------------
106
107 As with file handles, the kernel allocates the inode structures
108 dynamically, but can't free them yet.
109
110 The file ``inode-nr`` contains the first two items from
111 ``inode-state``, so we'll skip to that file...
112
113 ``inode-state`` contains three actual numbers and four dummies.
114 The actual numbers are, in order of appearance, ``nr_inodes``,
115 ``nr_free_inodes`` and ``preshrink``.
116
117 ``nr_inodes`` stands for the number of inodes the system has
118 allocated.
119
120 ``nr_free_inodes`` represents the number of free inodes (?) and
121 preshrink is nonzero when the
122 system needs to prune the inode list instead of allocating
123 more.
124
125
126 mount-max
127 ---------
128
129 This denotes the maximum number of mounts that may exist
130 in a mount namespace.
131
132
133 nr_open
134 -------
135
136 This denotes the maximum number of file-handles a process can
137 allocate. Default value is 1024*1024 (1048576) which should be
138 enough for most machines. Actual limit depends on ``RLIMIT_NOFILE``
139 resource limit.
140
141
142 overflowgid & overflowuid
143 -------------------------
144
145 Some filesystems only support 16-bit UIDs and GIDs, although in Linux
146 UIDs and GIDs are 32 bits. When one of these filesystems is mounted
147 with writes enabled, any UID or GID that would exceed 65535 is translated
148 to a fixed value before being written to disk.
149
150 These sysctls allow you to change the value of the fixed UID and GID.
151 The default is 65534.
152
153
154 pipe-user-pages-hard
155 --------------------
156
157 Maximum total number of pages a non-privileged user may allocate for pipes.
158 Once this limit is reached, no new pipes may be allocated until usage goes
159 below the limit again. When set to 0, no limit is applied, which is the default
160 setting.
161
162
163 pipe-user-pages-soft
164 --------------------
165
166 Maximum total number of pages a non-privileged user may allocate for pipes
167 before the pipe size gets limited to two pages. Once this limit is reached,
168 new pipes will be limited to two pages in size for this user in order to
169 limit total memory usage, and trying to increase them using ``fcntl()`` will be
170 denied until usage goes below the limit again. The default value allows to
171 allocate up to 1024 pipes at their default size. When set to 0, no limit is
172 applied.
173
174
175 protected_fifos
176 ---------------
177
178 The intent of this protection is to avoid unintentional writes to
179 an attacker-controlled FIFO, where a program expected to create a regular
180 file.
181
182 When set to "0", writing to FIFOs is unrestricted.
183
184 When set to "1" don't allow ``O_CREAT`` open on FIFOs that we don't own
185 in world writable sticky directories, unless they are owned by the
186 owner of the directory.
187
188 When set to "2" it also applies to group writable sticky directories.
189
190 This protection is based on the restrictions in Openwall.
191
192
193 protected_hardlinks
194 --------------------
195
196 A long-standing class of security issues is the hardlink-based
197 time-of-check-time-of-use race, most commonly seen in world-writable
198 directories like ``/tmp``. The common method of exploitation of this flaw
199 is to cross privilege boundaries when following a given hardlink (i.e. a
200 root process follows a hardlink created by another user). Additionally,
201 on systems without separated partitions, this stops unauthorized users
202 from "pinning" vulnerable setuid/setgid files against being upgraded by
203 the administrator, or linking to special files.
204
205 When set to "0", hardlink creation behavior is unrestricted.
206
207 When set to "1" hardlinks cannot be created by users if they do not
208 already own the source file, or do not have read/write access to it.
209
210 This protection is based on the restrictions in Openwall and grsecurity.
211
212
213 protected_regular
214 -----------------
215
216 This protection is similar to `protected_fifos`_, but it
217 avoids writes to an attacker-controlled regular file, where a program
218 expected to create one.
219
220 When set to "0", writing to regular files is unrestricted.
221
222 When set to "1" don't allow ``O_CREAT`` open on regular files that we
223 don't own in world writable sticky directories, unless they are
224 owned by the owner of the directory.
225
226 When set to "2" it also applies to group writable sticky directories.
227
228
229 protected_symlinks
230 ------------------
231
232 A long-standing class of security issues is the symlink-based
233 time-of-check-time-of-use race, most commonly seen in world-writable
234 directories like ``/tmp``. The common method of exploitation of this flaw
235 is to cross privilege boundaries when following a given symlink (i.e. a
236 root process follows a symlink belonging to another user). For a likely
237 incomplete list of hundreds of examples across the years, please see:
238 https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp
239
240 When set to "0", symlink following behavior is unrestricted.
241
242 When set to "1" symlinks are permitted to be followed only when outside
243 a sticky world-writable directory, or when the uid of the symlink and
244 follower match, or when the directory owner matches the symlink's owner.
245
246 This protection is based on the restrictions in Openwall and grsecurity.
247
248
249 suid_dumpable
250 -------------
251
252 This value can be used to query and set the core dump mode for setuid
253 or otherwise protected/tainted binaries. The modes are
254
255 = ========== ===============================================================
256 0 (default) Traditional behaviour. Any process which has changed
257 privilege levels or is execute only will not be dumped.
258 1 (debug) All processes dump core when possible. The core dump is
259 owned by the current user and no security is applied. This is
260 intended for system debugging situations only.
261 Ptrace is unchecked.
262 This is insecure as it allows regular users to examine the
263 memory contents of privileged processes.
264 2 (suidsafe) Any binary which normally would not be dumped is dumped
265 anyway, but only if the ``core_pattern`` kernel sysctl (see
266 :ref:`Documentation/admin-guide/sysctl/kernel.rst <core_pattern>`)
267 is set to
268 either a pipe handler or a fully qualified path. (For more
269 details on this limitation, see CVE-2006-2451.) This mode is
270 appropriate when administrators are attempting to debug
271 problems in a normal environment, and either have a core dump
272 pipe handler that knows to treat privileged core dumps with
273 care, or specific directory defined for catching core dumps.
274 If a core dump happens without a pipe handler or fully
275 qualified path, a message will be emitted to syslog warning
276 about the lack of a correct setting.
277 = ========== ===============================================================
278
279
280
281 2. /proc/sys/fs/binfmt_misc
282 ===========================
283
284 Documentation for the files in ``/proc/sys/fs/binfmt_misc`` is
285 in Documentation/admin-guide/binfmt-misc.rst.
286
287
288 3. /proc/sys/fs/mqueue - POSIX message queues filesystem
289 ========================================================
290
291
292 The "mqueue" filesystem provides the necessary kernel features to enable the
293 creation of a user space library that implements the POSIX message queues
294 API (as noted by the MSG tag in the POSIX 1003.1-2001 version of the System
295 Interfaces specification.)
296
297 The "mqueue" filesystem contains values for determining/setting the
298 amount of resources used by the file system.
299
300 ``/proc/sys/fs/mqueue/queues_max`` is a read/write file for
301 setting/getting the maximum number of message queues allowed on the
302 system.
303
304 ``/proc/sys/fs/mqueue/msg_max`` is a read/write file for
305 setting/getting the maximum number of messages in a queue value. In
306 fact it is the limiting value for another (user) limit which is set in
307 ``mq_open`` invocation. This attribute of a queue must be less than
308 or equal to ``msg_max``.
309
310 ``/proc/sys/fs/mqueue/msgsize_max`` is a read/write file for
311 setting/getting the maximum message size value (it is an attribute of
312 every message queue, set during its creation).
313
314 ``/proc/sys/fs/mqueue/msg_default`` is a read/write file for
315 setting/getting the default number of messages in a queue value if the
316 ``attr`` parameter of ``mq_open(2)`` is ``NULL``. If it exceeds
317 ``msg_max``, the default value is initialized to ``msg_max``.
318
319 ``/proc/sys/fs/mqueue/msgsize_default`` is a read/write file for
320 setting/getting the default message size value if the ``attr``
321 parameter of ``mq_open(2)`` is ``NULL``. If it exceeds
322 ``msgsize_max``, the default value is initialized to ``msgsize_max``.
323
324 4. /proc/sys/fs/epoll - Configuration options for the epoll interface
325 =====================================================================
326
327 This directory contains configuration options for the epoll(7) interface.
328
329 max_user_watches
330 ----------------
331
332 Every epoll file descriptor can store a number of files to be monitored
333 for event readiness. Each one of these monitored files constitutes a "watch".
334 This configuration option sets the maximum number of "watches" that are
335 allowed for each user.
336 Each "watch" costs roughly 90 bytes on a 32-bit kernel, and roughly 160 bytes
337 on a 64-bit one.
338 The current default value for ``max_user_watches`` is 4% of the
339 available low memory, divided by the "watch" cost in bytes.
340
341 5. /proc/sys/fs/fuse - Configuration options for FUSE filesystems
342 =====================================================================
343
344 This directory contains the following configuration options for FUSE
345 filesystems:
346
347 ``/proc/sys/fs/fuse/max_pages_limit`` is a read/write file for
348 setting/getting the maximum number of pages that can be used for servicing
349 requests in FUSE.
350
351 ``/proc/sys/fs/fuse/default_request_timeout`` is a read/write file for
352 setting/getting the default timeout (in seconds) for a fuse server to
353 reply to a kernel-issued request in the event where the server did not
354 specify a timeout at mount. If the server set a timeout,
355 then default_request_timeout will be ignored. The default
356 "default_request_timeout" is set to 0. 0 indicates no default timeout.
357 The maximum value that can be set is 65535.
358
359 ``/proc/sys/fs/fuse/max_request_timeout`` is a read/write file for
360 setting/getting the maximum timeout (in seconds) for a fuse server to
361 reply to a kernel-issued request. A value greater than 0 automatically opts
362 the server into a timeout that will be set to at most "max_request_timeout",
363 even if the server did not specify a timeout and default_request_timeout is
364 set to 0. If max_request_timeout is greater than 0 and the server set a timeout
365 greater than max_request_timeout or default_request_timeout is set to a value
366 greater than max_request_timeout, the system will use max_request_timeout as the
367 timeout. 0 indicates no max request timeout. The maximum value that can be set
368 is 65535.
369
370 For timeouts, if the server does not respond to the request by the time
371 the set timeout elapses, then the connection to the fuse server will be aborted.
372 Please note that the timeouts are not 100% precise (eg you may set 60 seconds but
373 the timeout may kick in after 70 seconds). The upper margin of error for the
374 timeout is roughly FUSE_TIMEOUT_TIMER_FREQ seconds.
375

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

문서 범위와 주의 사항

1-21

이 문서는 Rik van Riel과 Shen Feng이 작성한 `/proc/sys/fs/`의 sysctl 파일·디렉터리 설명서입니다. 일반 정보와 법적 안내는 `intro.rst`를 참조합니다.

이 디렉터리의 파일은 Linux 커널 동작의 여러 일반 항목을 감시하고 조정합니다. 일부 값은 시스템을 망가뜨릴 수 있으므로 실제로 바꾸기 전에 이 문서와 관련 소스를 모두 읽어야 합니다.

aio-nr과 aio-max-nr

22-40

`aio-nr`은 시스템 전체에서 현재 사용하는 비동기 I/O 요청 수를 보여주고, `aio-max-nr`은 `aio-nr`이 증가할 수 있는 최대값을 정합니다. 원문의 `aio-nr-max` 표기는 문맥상 `aio-max-nr`을 뜻합니다.

현재 요청 수가 최대값에 도달하면 `io_setup`이 `EAGAIN`으로 실패합니다. `aio-max-nr`을 높여도 커널 자료 구조를 미리 할당하거나 크기를 즉시 바꾸지는 않습니다.

dentry-negative

41-46

negative dentry 정책입니다. 파일을 제거할 때 해당 dentry를 항상 삭제하려면 `1`, 이 동작을 끄려면 `0`으로 설정합니다. 기본값은 비활성화인 `0`입니다.

dentry-state

47-78

이 파일은 `fs/dcache.c`에 정의된 `struct dentry_stat_t`의 값을 표시합니다. dentry는 동적으로 할당되고 해제됩니다.

struct dentry_stat_t dentry_stat {
      long nr_dentry;
      long nr_unused;
      long age_limit;         /* age in seconds */
      long want_pages;        /* pages requested by system */
      long nr_negative;       /* # of unused negative dentries */
      long dummy;             /* Reserved for future use */
};
필드의미
`nr_dentry`활성 및 미사용 상태를 합친 전체 할당 dentry 수
`nr_unused`현재 사용하지 않지만 재사용을 위해 LRU에 보관한 dentry 수
`age_limit`메모리가 부족할 때 dcache 항목을 회수할 수 있는 나이(초)
`want_pages``shrink_dcache_pages()`가 호출됐지만 dcache 정리가 끝나지 않았으면 0이 아닌 값
`nr_negative`파일에 매핑되지 않는 미사용 negative dentry 수
`dummy`향후 사용을 위해 예약된 값

negative dentry는 실제 파일에 매핑되지 않지만 사용자가 요청한 존재하지 않는 파일을 빠르게 거부하는 데 도움을 줍니다.

file-max와 file-nr

79-103

`file-max`는 Linux 커널이 할당할 file handle의 최대 수입니다. file handle 고갈 오류가 반복되면 이 한도를 늘릴 수 있습니다.

역사적으로 커널은 file handle을 동적으로 할당했지만 다시 해제하지 못했습니다. `file-nr`의 세 값은 할당된 file handle 수, 할당됐지만 쓰지 않는 수, 최대 수입니다. Linux 2.6 이상은 미사용 수를 항상 0으로 보고하며 오류가 아니라 할당 수와 사용 수가 정확히 같다는 뜻입니다.

`file-nr` 위치
첫 번째할당된 file handle 수
두 번째할당됐지만 쓰지 않는 수. Linux 2.6 이상에서는 항상 0
세 번째file handle 최대 수

`file-max`보다 많은 file descriptor를 할당하려 하면 커널 로그에 다음 `printk` 메시지가 기록됩니다.

VFS: file-max limit <number> reached

inode-nr과 inode-state

104-125

file handle처럼 커널은 inode 구조를 동적으로 할당합니다. `inode-nr`은 `inode-state`의 앞 두 값을 담고, `inode-state`에는 실제 값 세 개와 더미 네 개가 있습니다.

실제 필드의미
`nr_inodes`시스템이 할당한 inode 수
`nr_free_inodes`사용 가능한 inode 수
`preshrink`더 할당하는 대신 inode 목록을 정리해야 하면 0이 아닌 값

mount-max와 nr_open

126-141
항목의미
`mount-max`하나의 mount namespace에 존재할 수 있는 mount 최대 수
`nr_open`프로세스가 할당할 수 있는 file handle 최대 수

`nr_open` 기본값은 `1024*1024`, 즉 1048576이며 대부분 시스템에 충분합니다. 실제 한도는 `RLIMIT_NOFILE` 자원 제한에도 좌우됩니다.

overflowgid와 overflowuid

142-153

Linux UID와 GID는 32비트지만 일부 파일 시스템은 16비트 값만 지원합니다. 쓰기 가능하게 마운트한 이런 파일 시스템에 65535를 넘는 UID·GID를 기록할 때는 고정 대체값으로 변환합니다.

항목기본값과 역할
`overflowuid`기록할 수 없는 UID의 대체값, 기본 65534
`overflowgid`기록할 수 없는 GID의 대체값, 기본 65534

사용자별 pipe 페이지 한도

154-174
항목동작
`pipe-user-pages-hard`권한 없는 사용자 한 명이 pipe에 할당할 수 있는 전체 페이지의 절대 최대값
`pipe-user-pages-soft`새 pipe를 2페이지로 제한하고 `fcntl()` 확장을 거부하기 시작하는 전체 페이지 기준

hard 한도에 도달하면 사용량이 다시 내려갈 때까지 새 pipe를 만들 수 없습니다. 값 `0`은 제한 없음이며 기본값입니다.

soft 한도에 도달하면 해당 사용자의 새 pipe는 총 메모리 사용을 줄이기 위해 2페이지로 제한되고, 사용량이 내려갈 때까지 `fcntl()`로 키울 수 없습니다. 기본값은 기본 크기의 pipe 1024개를 만들 수 있는 수준입니다. 값 `0`은 제한 없음입니다.

protected_fifos

175-192

프로그램이 일반 파일을 만들 것으로 기대한 위치에 공격자가 제어하는 FIFO가 있을 때 실수로 쓰는 일을 막는 보호입니다. Openwall 제한을 기반으로 합니다.

정책
`0`FIFO 쓰기 제한 없음
`1`world-writable sticky 디렉터리에서 자신이나 디렉터리 소유자가 소유하지 않은 FIFO를 `O_CREAT`로 열지 못함
`2`값 1의 제한을 group-writable sticky 디렉터리에도 적용

protected_regular

213-228

`protected_fifos`와 비슷하지만 프로그램이 만들려던 일반 파일 자리에 공격자가 제어하는 일반 파일이 있을 때 쓰는 일을 막습니다.

정책
`0`일반 파일 쓰기 제한 없음
`1`world-writable sticky 디렉터리에서 자신이나 디렉터리 소유자가 소유하지 않은 일반 파일을 `O_CREAT`로 열지 못함
`2`값 1의 제한을 group-writable sticky 디렉터리에도 적용

suid_dumpable

249-280

setuid 또는 다른 방식으로 보호·taint된 바이너리의 core dump 모드를 조회하고 설정합니다.

이름동작
`0`default전통적 동작. 권한 수준을 바꿨거나 execute-only인 프로세스는 dump하지 않음
`1`debug가능하면 모든 프로세스가 현재 사용자 소유 core를 만들며 보안 검사를 적용하지 않음. `Ptrace`도 검사하지 않아 일반 사용자가 권한 프로세스 메모리를 볼 수 있는 위험한 디버깅 전용 모드
`2`suidsafe일반적으로 dump하지 않을 바이너리도 dump하되 `core_pattern`이 pipe handler 또는 완전한 경로일 때만 허용

값 `2`는 관리자가 정상 환경의 문제를 디버깅하며 권한 core dump를 안전하게 처리하는 pipe handler나 전용 디렉터리를 갖춘 경우에 적합합니다. 제한 이유는 CVE-2006-2451을 참조합니다. `core_pattern`이 pipe handler나 완전한 경로가 아니면 syslog에 올바른 설정이 없다는 경고를 남깁니다. 관련 항목은 `Documentation/admin-guide/sysctl/kernel.rst`의 `core_pattern` 절입니다.

binfmt_misc

281-287

`/proc/sys/fs/binfmt_misc`의 파일은 `Documentation/admin-guide/binfmt-misc.rst`에서 설명합니다.

POSIX message queue 파일 시스템

288-323

`mqueue` 파일 시스템은 POSIX 1003.1-2001 System Interfaces의 MSG 기능인 POSIX message queue API를 사용자 공간 라이브러리가 구현하는 데 필요한 커널 기능과 자원 조정 값을 제공합니다.

sysctl의미
`/proc/sys/fs/mqueue/queues_max`시스템에서 허용하는 message queue 최대 수
`/proc/sys/fs/mqueue/msg_max`queue 하나에 허용하는 message 최대 수. `mq_open`의 사용자 지정 한도도 이 값 이하여야 함
`/proc/sys/fs/mqueue/msgsize_max`queue 생성 때 정하는 message 최대 크기
`/proc/sys/fs/mqueue/msg_default``mq_open(2)`의 `attr`이 `NULL`일 때 기본 message 수. `msg_max`를 넘으면 `msg_max` 사용
`/proc/sys/fs/mqueue/msgsize_default``attr`이 `NULL`일 때 기본 message 크기. `msgsize_max`를 넘으면 `msgsize_max` 사용

epoll max_user_watches

324-340

`/proc/sys/fs/epoll`은 `epoll(7)` 인터페이스의 설정을 담습니다. 각 epoll file descriptor가 이벤트 준비 상태를 감시하는 파일 하나가 watch 하나입니다.

항목의미
`max_user_watches`사용자 한 명에게 허용되는 watch 최대 수
32비트 비용watch 하나당 약 90바이트
64비트 비용watch 하나당 약 160바이트
현재 기본값사용 가능한 low memory의 4%를 watch 바이트 비용으로 나눈 값

FUSE 요청 페이지와 timeout

341-374
sysctl동작
`/proc/sys/fs/fuse/max_pages_limit`FUSE 요청 처리에 사용할 수 있는 최대 페이지 수
`/proc/sys/fs/fuse/default_request_timeout`서버가 mount 때 timeout을 지정하지 않았을 때 커널 요청 응답의 기본 timeout(초)
`/proc/sys/fs/fuse/max_request_timeout`서버의 커널 요청 응답에 허용하는 최대 timeout(초)

`default_request_timeout`은 서버가 timeout을 지정하면 무시됩니다. 기본값 `0`은 기본 timeout 없음이고 최대 설정값은 65535입니다.

`max_request_timeout`이 0보다 크면 서버가 timeout을 지정하지 않고 기본값이 0이어도 최대 이 값인 timeout을 자동 적용합니다. 서버 지정값이나 기본값이 이 값보다 크면 최대값을 사용합니다. `0`은 최대 timeout 없음이며 최대 설정값은 65535입니다.

설정 시간이 지날 때까지 서버가 응답하지 않으면 FUSE 서버 연결을 중단합니다. timeout은 완전히 정밀하지 않아 60초로 설정해도 70초 뒤에 발동할 수 있으며, 상한 오차는 대략 `FUSE_TIMEOUT_TIMER_FREQ`초입니다.