鉴于旧式退役服务器硬件的价格正在下降,我正在考虑购买一台用于我在家的研究。我将在它上面运行 Linux、PostgreSQL、Neo4j 和 R-Server。我主要将它视为我的数据库服务器,但有时我可能会在上面进行一些繁重的计算。最重要的一点是,我希望它能够不间断地使用,让我可以远程访问数据,让我的操作整夜运行,并确保我的数据安全。
我查看了可用的硬件,似乎第五代 Proliant、第三代 PowerEdge 或同等产品的价格为 150-400 美元,具体取决于配置。这应该为我提供 RAID 存储 + 16 到 32GB RAM + 8 个实际核心,运行速度在 2.5 到 3GHz 之间:对我来说似乎足够了。
问题是,我很难将这些老款机器的性能与更现代的计算机进行比较。大多数终端消费者基准测试似乎都侧重于图形、游戏等...这些对于无头服务器来说无关紧要。考虑到我的用例(我上面提到的),我应该研究哪些参数?最重要的是,我不希望这台服务器在它所用的领域表现不如我目前的台式电脑(四核 i7 2.5GHz + 12GB RAM)。
PS 这个想法最初来源于此:http://xrds.acm.org/blog/2014/09/my-300-home-cloud-server-a-story-of-blood-sweat-and-ebay/
答案1
性能在很大程度上取决于您要执行的工作负载类型。即使对于数据库服务器,它也在很大程度上取决于您执行的查询。不幸的是,四核 i7 意义不大,因为 i7 品牌下有几代不同的芯片。
总的来说,我发现 phoronix-test-suite 上的基准测试结果有助于了解硬件的大致估计/预期。
除非 CPU 非常慢,并且 RAM 不足,否则数据库性能瓶颈通常都是磁盘限制,特别是如果您有一个大型数据库,并且查询或多或少是随机的,会调用大量磁盘寻道时间。多年来,硬盘一直是许多应用程序中最慢的环节。
RAID 在某种程度上可以为您提供额外的海量存储吞吐量,但即便如此,您最多也只能获得比单个磁盘高出几倍的性能,这可以带来很大的不同,但很难说是革命性的。这就是人们转向固态存储或 RAM 磁盘的原因。
我有一个数据库服务器,基本上是靠 RAM 磁盘运行的,只需要一个好的 UPS,并定期(每分钟,增量)进行磁盘备份。它运行良好,因为我有足够的 RAM 来保存整个数据库。即使没有采取制作 RAM 磁盘的极端措施,如果您有足够的 RAM,操作系统缓存也会为您带来大部分性能提升。
普通的桌面计算不需要太多的内存带宽,但对于繁忙的数据库和一些严肃的数字运算,我发现下一个性能瓶颈实际上是内存限制。CPU 速度非常快,它们很多时候只是坐在那里等待 RAM。这个想法是,你追求更多的芯片、更多的内核,而不是更高的 CPU 时钟。双 CPU 双核设置几乎总是比时钟频率相同的同代四核单 CPU 性能更好,因为每个 CPU 都有自己的 RAM 组。
从 CPU 角度来看,不同代产品之间的时钟性能提升幅度高达 5-10%。因此,将物理核心数相加,乘以时钟,然后根据代数进行调整,即可获得预期的性能。
但是,如果您打算重新编译特定于硬件的软件,并且软件/编译器可以利用较新 CPU 中的新增功能,那么情况可能会有所不同。对于我执行的一些(数学)工作量,我的双 Xeon E5-2670 v2 机箱的时钟性能是 i7-920 机箱的三倍,是的,总体上快了 14 倍以上!
最好先对您的应用程序需求进行快速调查/基准测试。检查磁盘吞吐量、CPU 负载、CPU 中断、RAM 使用率/缓存/交换。然后,在决定新系统时,您将有一些需要注意的地方。(如果您不知道,CPU 负载即使在等待 RAM 或磁盘时也总是会很高。一个快速但不完全准确的秘诀是在后台以最低优先级运行完全 CPU 密集型的东西,例如 SETI@home 等。然后,您可以将好负载与正常负载分开,无论好负载占用了多少,都是您的正常负载在等待某事。)
一般来说,寻找具有更多插座和插头的系统,无论是 CPU 插座、DIMM 插座还是 SATA 通道等等。通过正确的设置,并行执行操作确实可以加快速度。