launchctl 제한 maxfiles 대 sysctl kern.maxfilesperproc


2

MacOS High Sierra 동작을 이해하려고합니다. 내 컴퓨터의 출력은 다음과 같습니다.

launchctl 제한 maxfiles
maxfiles 256 무제한

sysctl kern.maxfiles
kern.maxfiles : 12228

sysctl kern.maxfilesperproc
kern.maxfilesperproc : 10240

내 질문은 다음과 같습니다.

  1. ~이다. maxfiles 256 ...에서 launchctl 제한 maxfiles 프로세스 당 한도입니까?
  2. maxfiles "launchctl limit maxfiles"는 다음과 (과) 다릅니다. kern.maxfiles kern.maxfilesperproc ?
  3. 어느 한도 ( maxfiles 256 또는 kern.maxfilesperproc : 10240 )은 응용 프로그램에서 사용자가 수동으로 시작한 응용 프로그램에 적용됩니까?

답변:


0
  1. ~이다. maxfiles 256 ...에서 launchctl limit maxfiles 프로세스 당 한도?

예. launchctl limit maxfiles 프로세스 별 소프트 및 하드 한계를 인쇄합니다. getrlimit(2), 그의 man 페이지가 말한다 :

     A resource limit is specified as a soft limit and a hard limit.  When a
     soft limit is exceeded a process may receive a signal (for example, if
     the cpu time or file size is exceeded), but it will be allowed to con-
     tinue execution until it reaches the hard limit (or modifies its resource
     limit).

getrlimit(2) 분명히 어디 쉘 내장 명령입니다 ulimit 그것의 정보를 얻는다.

  1. 왜 그래? launchctl limit maxfiles ~과 다르다 kern.maxfileskern.maxfilesperproc?

launchctl limit maxfiles launchd가 프로세스에 부과하는 프로세스 별 소프트 및 하드 제한을보고합니다. launchd는 명백히 256의 소프트 한도와 "무제한"하드 한도를 부과합니다. kern.maxfilesperproc 커널이 아니라 launchd.

kern.maxfiles 전체 시스템에서 전체 파일 설명자의 한계입니다. 모든 프로세스에 대한 모든 열린 파일과 커널이 자신의 목적을 위해 열어 놓은 모든 파일의 합계.

  1. 어느 한도 ( maxfiles 256 또는 kern.maxfilesperproc: 10240 )은 응용 프로그램에서 사용자가 수동으로 시작한 응용 프로그램에 적용됩니까?

GUI에서 앱을 실행하는 사용자가 수동으로 시작한 응용 프로그램은 launchd 부과 된 소프트 한도 인 256과 "무제한"하드 한도를 상속하므로 하드 한도가 효과적으로 적용됩니다. kern.maxfilesperproc, 시스템에 충분한 파일 디스크립터가 있다고 가정하면 전체 시스템이 히트하기 전에 앱이 제한을 초과 할 수 있습니다 kern.maxfiles.

프로세스 (앱)는 시스템 호출을 사용하여 실행 중일 때 소프트 한계를 조정할 수도 있습니다. 그래서 256의 소프트 한도는 시작시의 기본값이며, 앱 / 프로세스는 즉시 자신의 소프트 한도를 늘릴 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.