好吧,我准备将我的盒子(带有 2k 外部 ips)升级到最新的 squid(3.3.x),因为我的旧版本没有利用多核处理器的任何优势。
在研究工人的时候,我发现一个讨论,有人说:
在 squid.conf 中使用 cpu_affinity_map。将 Cpu0 留作“操作系统”。注意不要将两个繁忙的工作器放在同级超核上。这只是优化算法的草图。有许多细节取决于您的设置。
我也知道最好使用与 CPU 数量相同的工作器:
值得一提的是,当使用 cpu_affinity_map 并且在工作者和核心之间进行 1:1 映射时,我们通常会看到最佳性能结果(就 Squid 工作者而言,这可以有效地禁用那些复杂的算法)。
我的问题是...是物理 CPU 吗?我的机器报告有 8 个 CPU,但运行时只显示 2 个物理 CPU,cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
所以这意味着有 2 个工作器?
如果我把 2 个 worker 放在 2 个物理 CPU 上,把 Cpu0 留给操作系统合适吗?这意味着我只为 cpu1 设置了 1 个工作线程,而 OS 使用 cpu0?
PS 我知道 CPU 亲和性。我只需要弄清楚如何准确找出在性能下降之前我可以使用多少个 worker。
答案1
您有两个 Xeon E5506 CPU,总共 8 个内核。E5506 没有超线程。您可以运行七个工作器,并且仍有一个内核可供操作系统使用。