【问题标题】:Windows Service performance vs. Windows Application performanceWindows 服务性能与 Windows 应用程序性能
【发布时间】:2013-07-30 10:11:30
【问题描述】:

我正在开发一款需要以高性能运行的软件,我想知道它是否应该作为 Windows 服务或常规 Windows 应用程序运行。问题是:两者在性能方面有什么区别吗?意思是:操作系统调度器会给 Windows-Service 比 Windows-Application 更多的 CPU ticks 吗?

【问题讨论】:

    标签: windows performance service


    【解决方案1】:

    要回答问题,请参阅Description of Performance Options in Windows

    您可以使用性能选项将 Windows 设置为针对前台程序或后台服务进行优化。假设后台服务的数量相对较少,CPU 时间越长效率越高,桌面计算机上的程序服务器或交互式程序效率越高,时间片越短,对键盘输入和为更多线程提供服务(应用服务器模式下的终端服务有数千个。

    ...

    启用“前台应用程序”选项后,情况会变得更加复杂。这就引入了“可变量子”的概念。在这种情况下,后台任务接收的量程与前台任务接收的量程不同。此外,这两组量子都比线程在用于后台服务的计算机集上接收到的要短。目前,后台进程接收到的时间片为 3,而前台进程接收到的时间片为 9。因此,您可以计算线程在计时器到期之前将运行的时间长度。

    阅读整个链接了解更多详情。 TL/DR:后台服务接收更长的 quantas。

    但是,我非常怀疑您是否需要担心此设置。首先,99.9999% 的应用程序一直什么都不做,只是等待一些 IO 完成(磁盘、网络)。除非您在紧密循环中执行算术运算,否则出于所有实际原因,您的代码从不运行并始终等待。提升对您没有任何帮助。而且我非常怀疑您是否真的需要部署一个在紧密循环中执行高 CPU 的服务

    与您更相关的主题是查看High Performance Windows Programs 以了解如何在 Windows 上编写适当的性能程序(即使用 IO 队列完成状态和朋友)。

    而且,如果您需要 CPU 提升,只需禁用 CPU power savings in BIOS

    【讨论】:

    • 优秀的答案。为了补充这一点(尽管我现在找不到参考...),无论用户设置如何,服务器和非服务器版本的 Windows 之间都有一个类似的变量量子事物。此外,当然还有由于优先级提升对发出信号的事件的影响。
    • @Damon: 可能是Inside the Windows Vista Kernel: Part 1 : By default, on client versions of Windows threads are permitted to run up to 2 clock ticks (6 if in the foreground)(而不是服务器的 3 和 9)。
    • 确实如此! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2012-08-06
    • 1970-01-01
    • 2010-09-05
    相关资源
    最近更新 更多