设置Windows进程(或用户)内存限制

Mik*_*cki 45 memory windows

有没有办法设置进程可以在Windows XP中使用的系统范围的内存限制?我有几个不稳定的应用程序,大部分时间都可以正常工作,但可以点击一个错误,导致在几秒钟内吃掉整个记忆(或者至少我认为就是这样).这导致硬复位,因为Windows变得完全没有响应,我失去了工作.

我希望能够像Linux上的/ etc/limits那样做 - 例如设置M90(为单个用户设置90%的最大内存来分配).因此,无论如何,系统都会获得剩余的10%.

Ada*_*itz 36

使用Windows 作业对象.作业就像进程组一样,可以限制内存使用和进程优先级.


Jes*_*ogt 24

使用Microsoft 的Application Verifier(AppVerifier)工具.

在我的情况下,我需要模拟内存不再可用,所以我在工具中执行了以下操作:

  1. 添加了我的申请
  2. 未选中基本
  3. 检查低资源模拟
    • 将TimeOut更改为120000 - 我的应用程序将在任何生效之前正常运行2分钟.
    • 将HeapAlloc更改为100 - 100%堆分配错误的可能性
    • 将Stacks设置为true - 堆栈将无法增大
  4. 保存
  5. 开始我的申请

2分钟后,我的程序无法再分配新的内存,我能够看到一切都是如何处理的.


Jim*_*ham 3

\n

每个进程的限制

\n

从最终用户的角度来看,在超级用户问题 \xe2\x80\x9c是否可以限制 Windows \xe2\x80\x9d 上特定进程的内存使用情况中有一些有用的答案(和评论),包括讨论如何对以下任何一项或全部设置递归配额限制:

\n
    \n
  • CPU 分配(数量、关联性、NUMA 组)
  • \n
  • CPU使用率,
  • \n
  • RAM 使用情况( \xe2\x80\x98comfilled\xe2\x80\x99 和 \xe2\x80\x98working set\xe2\x80\x99 ),以及
  • \n
  • 网络使用情况,
  • \n
\n

\xe2\x80\xa6 主要通过内置的Windows \xe2\x80\x98Job Objects\xe2\x80\x99系统(如@Adam Mitz\xe2\x80\x99s 答案@Stephen Martin\xe2\x80\中提到的) x99s 上面的评论,使用:

\n
    \n
  • 注册表(需要时用于持久性)
  • \n
  • 免费工具,例如开源Process Governor
  • \n
\n

注意:嵌套作业对象〜可能〜在所有早期版本的Windows下都可用,但未嵌套的版本似乎可以追溯到Windows XP)

\n

每用户限制

\n

就每个用户的整体而言总体配额而言:

\n
    \n
  • ??
  • \n
  • 每个用户会话可能会自动分配给一个作业组本身;如果为真,则每个用户的限制应该能够应用于该作业组 更新:不;作业对象只能在创建时嵌套或与特定进程关联,并且在某些情况下,允许子作业对象\xe2\x80\x98从其父对象中释放\xe2\x80\x99并变得独立,因此他们可以\xe2\x80\x99t促进\xe2\x80\x98每个用户\xe2\x80\x99资源限制。
  • \n
\n

(不过,NTFS 确实支持每用户文件系统~存储~配额)

\n

每个系统的限制

\n

除了简单的 BIOS 或 \xe2\x80\x98energy 配置文件\xe2\x80\x99 限制之外:

\n
    \n
  • VM 管理程序或 Kubernetes 式容器资源限制控制可能是最直接的(至少就最终用户的可理解性而言)
  • \n
\n
\n

脚注,关于非 Windows 系统的每个进程和其他资源配额/QoS

\n
    \n
  • \xe2\x80\x98Classic\xe2\x80\x99 Mac OS (包括在 2000 年代 Mac OS X 版本上运行的 \xe2\x80\x98classic\xe2\x80\x99 应用程序) :可以轻松设置每个应用程序的内存限制在目标程序的Finder \ xe2\x80\x98Get Info\xe2\x80\x99 窗口的 \xe2\x80\x98Memory\xe2\x80\x99 部分中;作为使用协作多任务处理的系统,每个进程的 CPU 限制是不可能的。
  • \n
  • BSD:?(可能与 Linux 和非专有 macOS 方法有一些重叠?)
  • \n
  • macOS (又名 \xe2\x80\x98Mac OS X\xe2\x80\x99):没有面向用户的界面;系统支持包括(取决于版本)\xe2\x80\x98Multiprocessing Services API\xe2\x80\x99Grand Central Dispatch、POSIX 线程/ pthread、\xe2\x80\x98操作对象\xe2\x80\x99 以及其他可能的对象 对象。
  • \n
  • Linux: \xe2\x80\x98Resource Manager\xe2\x80\x99/ limits.conf控制组/\xe2\x80\x98cgroups\xe2\x80\x99,进程优先级/\xe2\x80\x98niceness\xe2\x80\ x99/ renice,其他?
  • \n
  • IBM z/OS 和其他大型机式系统:资源控制/分配几乎从一开始就内置
  • \n
\n