根据我的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 — 一个文件描述符占用两个以上字节的 RAM。 (当然,您使用的是 64 位平台,而 2 63 -1 是要打开的文件数量,这是荒谬的)

我承认我不知道如何计算这个数字——这肯定取决于文件描述符的类型;如果是 TCP 套接字、打开本地文件(甚至可能因文件系统而异)、管道等,内核内存使用肯定会有所不同。

老实说,我建议您启动一个临时 EC2 实例(具有相同的机器类型),将限制设置为高得离谱的值,然后进行测试。

相关内容