我想确保我的 W2008R2 盒子在 CPU 线程上具有最少的中断和上下文切换。
我有 4 核/8 HT 线程 CPU。我正在运行一个仅使用套接字作为 IO 设备的应用程序,因此我预计唯一的硬件中断是网络。
但是我想尽量减少来自操作系统线程的中断。我停止了大多数我知道不必要的服务。但这只是我的个人直觉。
我希望对什么可以停止、什么不能停止以及哪些参数可以调整有透彻的了解。
此外,我应该监控什么以及如何监控以确保我做出了正确的决定。
仅描述操作:该应用程序是 .NET 的低延迟应用程序,已投入生产 3 年,并且相当稳定。它使用很少的 CPU,GC 数量少,使用低 RAM,使用大量套接字通信,偶尔使用磁盘 IO(某些应用程序日志记录速度为每分钟 10 行文本... 应用程序有 4 个非常重要的线程要运行(但 perfmon 中应用程序的当前物理线程数为 44)。
我在应用程序之外使用的唯一服务是 RDP。
答案1
您可能希望采取更广泛的方法,并使用 SysInternals Process Monitor 等工具来分析您的系统活动。它将为您提供 Windows 系统上持续发生的大量活动的详细信息,但只有极少的活动可以感知。
注册表是大量活动的一个特定来源。工具栏上有四个按钮,可让您按注册表、文件系统、网络活动或单个进程和线程进行筛选。
如果您发现某个进程产生了大量“噪音”或多余的活动,您可以尝试将其调低,看看是否不会破坏任何东西。
值得一提的是,在 Windows 7/2008 R2 中,进程现在具有 i/o 优先级和内存优先级。您可能想尝试使用 Lasso 等工具,看看是否可以获得可衡量的结果。请注意,可能无法分配更高的 i/o 优先级。我相信这类工具通过调低其他选定后台进程的 i/o 优先级来工作。
更多信息:
进程监控器 3.01
http://technet.microsoft.com/en-us/sysinternals/bb896645
答案2
我希望对什么可以停止、什么不能停止以及哪些参数可以调整有透彻的了解。
恕我直言,这纯属胡说八道。除非您真的遇到了问题,否则您是在为 2 美元左右的最大性能提升而战,这根本不值得。如果这个问题是关于如何提高程序效率的,那么这是一个错误的论坛,也是一个错误的问题 - 但这将是一场值得的战斗。
最重要的是要获得一个不错的网卡。服务器级。因为这是当今大多数服务器主板所具有的 - 除非你为了省钱而购买工作站主板,否则你基本上已经非常理想了。
应用程序有 4 个非常重要的线程需要运行(但应用程序的性能监视器中当前物理线程数为 44)。
好吧,这可能是一个问题,但这不是你能从操作系统调优角度解决的问题——找出它为什么有 44 个线程,它们应该做什么。这是程序员的任务,正如我所说——这可能是值得的。但调整 2% 左右的增益是错误的。Greg 的帖子是一个很好的例子——他谈到了注册表访问等——这很少重要,如果它很重要,那只是“程序员搞砸了,让他修复代码”的问题,而不是“我如何调整窗口”。
顺便说一句,这 44 个线程可能大部分都处于休眠状态。诸如终结器、GC 线程、工作项池的保留线程等,它们只是等待某个项进入队列。