내 CPU를 기준으로 지원되는 최대 파일 설명자는 무엇입니까?

내 CPU를 기준으로 지원되는 최대 파일 설명자는 무엇입니까?

Ubuntu 14.04를 실행하는 Amazon EC2 인스턴스를 사용하고 있지만 몇 가지 문제가 발생했습니다.

현재 실행 중인 CPU 구성을 기준으로 열 수 있는 최대 파일 수는 몇 개입니까?

이에 대한 계산이 있나요? 아니면 알고리즘?

CPU 구성(듀얼 CPU):

processor   : 0 
vendor_id   : GenuineIntel
cpu family  : 6
model       : 62
model name  : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping    : 4
microcode   : 0x415
cpu MHz     : 2494.046
cache size  : 25600 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 1
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm xsaveopt fsgsbase smep erms
bogomips    : 4988.09
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

명확성을 위해 이러한 제한을 설정하는 방법이 아니라 설정의 최대 제한을 계산하는 방법을 묻는 것입니다.

답변1

나는 당신이 직면하게 될 한계는 관련된 커널 데이터 구조에 대한 RAM이 부족하다는 점이라고 확신합니다. CPU 아키텍처는 중요할 수 있지만(예: 데이터 구조의 크기가 다르거나 다르게 정렬되어야 하기 때문에) 어떤 특정 x86_64 CPU를 가지고 있는지는 중요하지 않습니다.

32비트 플랫폼에서는 2 31 -1(예: MAXINT) 로 제한될 수 있지만 먼저 RAM이 부족할 것입니다. 하나의 파일 설명자가 2바이트 이상의 RAM을 차지합니다. (물론 당신은 64비트 플랫폼을 사용하고 있으며 2 63 -1은 열려는 파일 수입니다. 이는 터무니없는 일입니다)

나는 이 숫자를 계산하는 방법을 모른다는 것을 인정합니다. 이는 확실히 파일 설명자의 유형에 따라 다릅니다. TCP 소켓인 경우 로컬 파일(파일 시스템에 따라 다를 수도 있음), 파이프 등을 여는 경우 커널 메모리 사용량은 확실히 다릅니다.

솔직히 말해서 임시 EC2 인스턴스(동일한 머신 유형 사용)를 가동하고 한도를 터무니없이 높은 값으로 설정한 다음 테스트해 보는 것이 좋습니다.

관련 정보