我正在尝试构建一个处理服务器,用于处理位图处理以及色度键控图像和 Photoshop 自动化的 OpenGL 渲染。我在这里和 Google 上搜索的结果出奇地少,而且看到没有用于位图或图像处理的标签,我认为这是一个专门的应用程序。
位图处理非常耗费 CPU,而色度键控和 Photoshop 则耗费 GPU。我怀疑这是否是过度优化,因为我们公司每天批量处理数千张图像(目前在单个工作站上),任何节省处理时间和工作站停机时间的做法都是有益的。
有人有使用这种类型的处理服务器的经验吗?构建这样的服务器时需要特别考虑什么吗?还是我想太多了?
对于位图处理,我们使用 C# 类System.Drawing.Imaging
和System.Drawing.Drawing2D
GDI+ 库。我们使用 运行这个多线程System.Threading
。对于色度键控,我们使用 Primatte,它是 openGL,但我不知道它还使用哪些其他库。
答案1
不久前,我管理过一个类似的服务器集群(双成员集群),我的基本方法是 ~ CPU bottleneck... max out processor speed and core count
。它也是在高端服务器上,拥有大量 RAM、高容量 SSD(用于快速访问处理过程中临时存储在其中的图像)和多个 1Gbit NIC,同样是为了最大限度地提高性能,从而提高处理图像的吞吐量。
效果非常好,而且由于业务关键型功能的工作量很大,MBA 和其他高层很乐意额外投资约 25,000 美元购买硬件,让一切顺利运行。至少有一次我向他们介绍了我的建议的好处。是的,我认为你想多了,至少有点。 首先“只需”使用强大的硬件来解决问题。 如果这不能提供所需的性能,那么您就需要担心优化代码和检查流程中的瓶颈。
在我开始创建和“推销”我的建议的基本过程之前,让我先指出一句 SA 格言:
It's better to over-engineer than under-engineer.
- (在这个特定的例子中,宁可指定“过多”的服务器,也不要指定“过少”的服务器。)
我想说的是,你的情况听起来与我的情况非常相似,并建议采取类似的方法。我想下面的内容都不是严格意义上的“系统管理”,所以你可能可以在这里停止阅读,但它们都密切相关,如果你不能有效地向业务部门推销你的建议,系统管理和架构就是地狱……如果你能,你可以称自己为系统工程师/架构师,并要求为基本上相同的工作支付更多的钱,因为你有能力用简单的数字来表达你的想法,让“迟钝的孩子”(高管和 MBA)理解。
我的过程:
- 进行基本的基准测试并使用简单的预测来大致了解所需的性能。
- 创建一个估算,并帮助我选择要获取的硬件(一般意义上),我会提出 3 个规格。
- 我认为最低限度是可行的(如果我的数字有点偏差,这实际上是最低限度 +~15%,以便给我一个缓冲/安全裕度)
- A合理的最大/“最佳”可能配置
- 中间值,介于两者之间。
- 根据业务优先级(省钱?最大化系统输出/性能?一些妥协?),我会推荐其中一个,另外两个包括选项应该工作,如果我的建议由于某种原因没有被接受。
- 创建一个估算,并帮助我选择要获取的硬件(一般意义上),我会提出 3 个规格。
- 我会列出每个解决方案的成本,并做一个基本的,定量尽可能地进行成本/收益分析。从我过去的案例来看,这是一个产生收入的业务流程,因此这很简单~
we made $[x] from this last year, on [y] images processed, for a profit of $[z]/image processed, or $[i]/day.
然后我将硬件成本转换为类似的单位-$[x] total CapEx, or $[z]/image processed or $[i]/day
。(当存在不同的未来“预测”时,对“预测的”未来数字执行相同的操作。) - 一旦你计算了成本,就可以开始计算或列出收益。使用这些美元数字和成本比较来指导你的决定(并提倡你的最终建议)确实很有帮助,而且根据我的经验,通常可以证明在可能利用率较低的硬件上多花点钱是合理的。
- 在我提到的例子中,
$25,000
我建议的费用比最初建议的费用“多”buy a single mid-range server and slap our image processing stuff on that
了约$70 a day
,并且<10 cents an image processed
……我们做到了很多10 cents
比我们处理的每个图像都要多。
- 在我提到的例子中,
- 为了确保他们采纳我过度设计的冗余集群建议(这样我会更容易地支持和管理),我列出了服务器上计算资源不足的成本——容量不足可能造成的收入损失、在工作站上“手动”执行的每小时成本(
several hundred dollars an hour
),并添加了定性收益(supportability
、ease of management
等)和成本(reputation damage
、angry clients
等)作为锦上添花。然后再次指出,我推荐的解决方案仅花费$70 a day
。
无论如何,这比我预期的要长得多,而且技术性更低......但我希望你觉得它有用。