.net 提高应用程序性能和智能性
我有一个与应用程序性能和智能相关的问题 我已经创建了一个窗口服务,如果我在3台不同的配置机器上运行它的话。我希望它利用适当的机器资源(CPU和内存) 假设机器1(M1)具有单核和1GB ram Machine2(M2)有两个具有2 GB ram的内核 Machine3(M3)有4个具有4 GB ram的磁芯 现在,当我的服务在它上面运行时,它应该利用适当的资源。比如,若机器的cpu使用率为1%,那个么用户的cpu使用率应该高达50%或更多。如果已经是50%,只使用30%。拉姆也是。但千万不要超过90%之类的限制 基本上,我编写了一个多线程服务,它现在不关心机器资源,并继续利用它。我想把这些情报包括进去 请帮我说说你的想法.net 提高应用程序性能和智能性,.net,performance,memory-management,windows-services,cpu-usage,.net,Performance,Memory Management,Windows Services,Cpu Usage,我有一个与应用程序性能和智能相关的问题 我已经创建了一个窗口服务,如果我在3台不同的配置机器上运行它的话。我希望它利用适当的机器资源(CPU和内存) 假设机器1(M1)具有单核和1GB ram Machine2(M2)有两个具有2 GB ram的内核 Machine3(M3)有4个具有4 GB ram的磁芯 现在,当我的服务在它上面运行时,它应该利用适当的资源。比如,若机器的cpu使用率为1%,那个么用户的cpu使用率应该高达50%或更多。如果已经是50%,只使用30%。拉姆也是。但千万不要超过
谢谢正如Archeg所说,根据处理器的数量,您可以增加线程数。但是,基于CPU活动增加线程数量是错误的做法 从这个角度看,CPU调度程序以毫秒级的粒度分配时隙。如果其他进程对系统的负载较低,则会给进程更多的时间。时期如果有很多进程,你会得到较少的时间段。你不应该用太多的线来敲打它 你需要做的是决定你想做什么。服务是否对时间敏感?如果是这样的话,那么在负载较重的系统中,您可以使用较少的CPU时间来操作,而在空闲系统中,您可以在相同的时间内(比如秒)使用更多的CPU时间。注意:如果您的服务进行I/O操作,可能您的服务本身会限制它可以使用多少CPU 有了RAM,您可以做一些事情,比如,给定系统有多少空闲RAM,将算法切换到使用更少处理或更快处理,但需要更多内存的算法(反之亦然)
关键是,除了更好的调度程序(这是许多聪明人多年来一直关注的问题)之外,没有“独立于服务”的方式来进行这种智能扩展。但是,您可以编写了解当前系统约束的服务,并相应地更改行为。如果您在设计时考虑到性能,那么构建高性能.NET应用程序将非常容易。确保从项目一开始就制定绩效计划。永远不要尝试将性能添加为构建后步骤。另外,使用迭代开发过程,该过程包含迭代之间的持续测量 通过遵循最佳实践设计准则,您可以显著增加创建高性能应用程序的机会。
考虑以下设计准则:
- 考虑安全性和性能。
- 对应用程序进行逻辑分区。
- 评估亲和力。
- 减少往返行程。
- 避免阻塞长时间运行的任务。
- 使用缓存。
- 避免不必要的例外情况。