Windows自身没有提供类似Linux cgroup的能力来限制进程或进程组的资源占用,进程CPU/IO/内存/网络等资源的控制只能由自己实现。目前已有第三方的实现,主要是限制进程CPU的占用,如文档 < 21 Best Ways to Limit the CPU Usage of a Process > 所描述的BES,Process Tamer等软件。自Windows 8及Server 2012开始Windows系统有提供以job为单位的CPU占用及内存上限设置,之前的版本则只能以进程或线程为单位进行限制。
进程CPU占用限制方案
即时轮询系统所有进程(线程)的CPU占用,当发现所设定进程有超标时强制暂停进程所有线程的执行,然后在适当的时机再恢复执行。其中所涉及技术点:
进程CPU占用查询 GetProcessTimes
BOOL GetProcessTimes(
[in] HANDLE hProcess,
[out] LPFILETIME lpCreationTime,
[out] LPFILETIME lpExitTime,
[out] LPFILETIME lpKernelTime,
[out] LPFILETIME lpUserTime
);
此函数可以获取进程从创建至当前的总运行时间及总的CPU时间,(KernelTime + UserTime) < 系统CPU数 * (当前时间 - CreationTime)
线程CPU占用查询 GetThreadTimes
BOOL GetThreadTimes(
[in] HANDLE hThread,
[out] LPFILETIME lpCreationTime,
[out] LPFILETIME lpExitTime,
[out] LPFILETIME lpKernelTime,
[out] LPFILETIME lpUserTime
);
QueryThreadCycleTime可以提供更精准的CPU时间数据,单位为CPU时钟周期
BOOL QueryThreadCycleTime(
[in] HANDLE ThreadHandle,
[out] PULONG64 CycleTime
);
线程暂停及恢复
Windows平台没有提供暂停整个进程的支持函数,只能以线程为单位来操作,即SuspendThread及ResumeThread:
DWORD SuspendThread(
[in] HANDLE hThread
);
DWORD ResumeThread(
[in] HANDLE hThread
);
CPU亲和性设置: SetProcessAffinityMask
BOOL SetProcessAffinityMask(
[in] HANDLE hProcess,
[in] DWORD_PTR dwProcessAffinityMask
);
此函数可以限定进程及其所有线程所能使用的CPU,故一定程序上亦限定了进程最大的系统CPU占用率。
DWORD_PTR SetThreadAffinityMask(
[in] HANDLE hThread,
[in] DWORD_PTR dwThreadAffinityMask
);
此函数可单独限制特定线程的CPU亲和性。
进程优先级设置: SetPriorityClass
优先级解决的是优先运行及退让CPU的问题,本质上并不能限定CPU占用,只是优先级高于当前任务的忙碌的时候,当前进程会主动退让CPU 线程优先级设置:SetThreadPriority
BOOL SetThreadPriority(
[in] HANDLE hThread,
[in] int nPriority
);
Job Objects
Windows系统提供了Job的概念用以管理多个进程,可以限制Job对象内所有进程及期线程的CPU核心占用、CPU占用及内存分配上限等,均通过SetInformationJobObject来实现,具体的CPU限制由JOBOBJECT_CPU_RATE_CONTROL_INFORMATION管理,内存限制则由JOBOBJECT_EXTENDED_LIMIT_INFORMATION来管理。
BOOL SetInformationJobObject(
[in] HANDLE hJob,
[in] JOBOBJECTINFOCLASS JobObjectInformationClass,
[in] LPVOID lpJobObjectInformation,
[in] DWORD cbJobObjectInformationLength
);
需要注意的是CPU占用设置只有Windows 8及Server 2012之后的版本有效。
CPU Sets
此部分只限定了CPU Affinity属性
实验验证
可以直接利用开源项目go-winjob验证,验证系统Windows 8 x64,go-winjob git repo: https://github.com/kolesnikovae/go-winjob
验证程序
#include <stdio.h>
#include <stdlib.h>
void main(int argc, char *argv[])
{
unsigned long total = 0, count = 0, i = 0;
while (1) {
if (malloc(1024)) {
total += 1024;
count++;
}
if (!(++i & 4095))
printf("alloc: %u size: %u bytes\n", count, total);
}
}
无限制
在无限制的情况下,此进程会占满一个CPU核心,commit内存总占用达2G

单一进程
在设定CPU上限16%及内存16M上限之后,结果如下:
examples/job_object.go按如下修改:
var limits = []winjob.Limit{
winjob.WithBreakawayOK(),
winjob.WithKillOnJobClose(),
winjob.WithActiveProcessLimit(3),
winjob.WithProcessTimeLimit(10 * time.Second),
winjob.WithCPUHardCapLimit(1600), // 16%
winjob.WithProcessMemoryLimit(16 << 20), // 16MB
winjob.WithWriteClipboardLimit(),
}
const defaultCommand = ".\\CPUStress.exe"
多进程(双进程)
将winjob.WithProcessMemoryLimit 改为 winjob.WithJobMemoryLimit,后者表示此job内所有进程要占用的总内存限制:
var limits = []winjob.Limit{
winjob.WithBreakawayOK(),
winjob.WithKillOnJobClose(),
winjob.WithActiveProcessLimit(3),
winjob.WithProcessTimeLimit(10 * time.Second),
winjob.WithCPUHardCapLimit(1600), // 16%
winjob.WithJobMemoryLimit(16 << 20), // 16MB
winjob.WithWriteClipboardLimit(),
}
验证结果如下:

winjob example代码:
// +build windows
package main
import (
"encoding/json"
"log"
"os"
"os/exec"
"os/signal"
"time"
"golang.org/x/sys/windows"
"github.com/kolesnikovae/go-winjob"
)
var limits = []winjob.Limit{
winjob.WithBreakawayOK(),
winjob.WithKillOnJobClose(),
winjob.WithActiveProcessLimit(3),
winjob.WithProcessTimeLimit(10 * time.Second),
winjob.WithCPUHardCapLimit(1600), // 16%
winjob.WithJobMemoryLimit(16 << 20), // 16MB
winjob.WithWriteClipboardLimit(),
}
const defaultCommand = ".\\CPUStress.exe"
const stressCommand = ".\\CPUStressX64.exe"
func main() {
job, err := winjob.Create("", limits...)
if err != nil {
log.Fatalf("Create: %v", err)
}
cmd := exec.Command(defaultCommand)
cmd.Stderr = os.Stderr
cmd.SysProcAttr = &windows.SysProcAttr{
CreationFlags: windows.CREATE_SUSPENDED,
}
if err := cmd.Start(); err != nil {
log.Fatalf("Start: %v", err)
}
stress := exec.Command(stressCommand)
stress.Stderr = os.Stderr
stress.SysProcAttr = &windows.SysProcAttr{
CreationFlags: windows.CREATE_SUSPENDED,
}
if err := stress.Start(); err != nil {
log.Fatalf("Start: %v", err)
}
s := make(chan os.Signal, 1)
signal.Notify(s, os.Interrupt)
c := make(chan winjob.Notification)
subscription, err := winjob.Notify(c, job)
if err != nil {
log.Fatalf("Notify: %v", err)
}
done := make(chan struct{})
go func() {
defer close(done)
ticker := time.NewTicker(time.Second * 5)
defer ticker.Stop()
var counters winjob.Counters
for {
select {
case <-s:
log.Println("Closing job object")
if err := job.Close(); err != nil {
log.Fatal(err)
}
log.Println("Closing subscription")
if err := subscription.Close(); err != nil {
log.Fatal(err)
}
return
case n, ok := <-c:
if ok {
log.Printf("Notification: %#v\n", n)
} else if err := subscription.Err(); err != nil {
log.Fatalf("Subscription: %v", err)
}
case <-ticker.C:
if err := job.QueryCounters(&counters); err != nil {
log.Fatalf("QueryCounters: %v", err)
}
b, err := json.MarshalIndent(counters, "", "\t")
if err != nil {
log.Fatal(err)
}
log.Printf("Counters: \n%s\n", b)
}
}
}()
if err := job.Assign(cmd.Process); err != nil {
log.Fatalf("Assign: %v", err)
}
if err := winjob.Resume(cmd); err != nil {
log.Fatalf("Resume: %v", err)
}
if err := job.Assign(stress.Process); err != nil {
log.Fatalf("Assign: %v", err)
}
if err := winjob.Resume(stress); err != nil {
log.Fatalf("Resume: %v", err)
}
if err := cmd.Wait(); err != nil {
log.Fatalf("Wait: %v", err)
}
if err := stress.Wait(); err != nil {
log.Fatalf("Wait: %v", err)
}
// Wait for a signal.
<-done
}
mostbet сменить номер [url=http://mostbet37461.help]mostbet сменить номер[/url]
mostbet visa [url=https://mostbet25863.help/]https://mostbet25863.help/[/url]
mostbet oglindă azi [url=https://mostbet25863.help/]mostbet oglindă azi[/url]
Ребята, очень современный гайд! Автор объясняет, как изменился маркетинг с приходом Search Generative Experience (SGE) и GEO. Ключевые темы: оптимизация под генеративные ответы ИИ (цитируемость, структурированные данные), контентная стратегия с фокусом на личный опыт и E-E-A-T 2.0, техническое SEO 2026 (INP, Edge SEO, Green SEO). Также разбираются визуальный и голосовой поиск, Social SEO и гиперлокальное продвижение с AR-навигацией. Очень актуально: https://aikidovaenga.ru/stati/prodvizhenie-sajtov-polnoe-rukovodstvo-po-seo-i-internet-marketingu-v-2026-godu/
I moved to 0W-20 for wintry weather starts off after analyzing checks on oil change coupons Greensboro .
mostbet limita depunere [url=https://mostbet25863.help]https://mostbet25863.help[/url]
This clarified aluminum vs copper wiring. I compared pricing and codes on Richardson, TX residential electrician in Richardson too.
ข้าวร่วนมันพอดี ไก่ไม่คาว น้ำจิ้มแซ่บ ผู้กำกับสับไก่ข้าวมันไก่ธนาพล รายละเอียด ข้าวมันไก่สิงคโปร์
Капельница от похмелья — это не просто средство для снятия симптомов, но и эффективный способ быстрого восстановления организма после алкогольной интоксикации. В наркологической клинике «Частный медик 24» в Екатеринбурге мы предоставляем услугу выезда нарколога на дом, что позволяет пациентам получить необходимую медицинскую помощь, не покидая комфорт своей обстановки. Это особенно важно в случае, если состояние пациента серьёзно ухудшилось, и он не может поехать в клинику самостоятельно.
Подробнее тут – [url=https://kapelnicza-ot-pokhmelya-ekaterinburg-7.ru/]капельница от похмелья[/url]
mostbet aviator strategiya [url=www.mostbet29401.help]www.mostbet29401.help[/url]
mostbet az mines [url=https://www.mostbet29401.help]https://www.mostbet29401.help[/url]
Great insights! Find more at dónde dormir en Arzúa .
mostbet poker turnir [url=http://mostbet29401.help]http://mostbet29401.help[/url]
mostbet retragere transfer bancar [url=http://mostbet25863.help]mostbet retragere transfer bancar[/url]
Locked out for the time of a vacation — locksmith spoke back right now and solved the problem. Highly advised.
Наркологический стационар с комфортными условиями сочетает в себе высококлассное медицинское обслуживание и удобства, которые способствуют более быстрому восстановлению пациента. В таких клиниках пациенты не только получают лечение от зависимости, но и имеют возможность восстановиться в комфортных условиях, что важно для психоэмоционального состояния. Комфортные условия способствуют улучшению настроения, уменьшению стресса и созданию более эффективной атмосферы для лечения. В случае запоя или алкоголизма врач может предоставить помощь на дому, чтобы стабилизировать состояние пациента до перевода в стационар.
Получить дополнительные сведения – [url=https://narkologicheskij-staczionar-sankt-peterburg-4.ru/]частный наркологический стационар в санкт-петербурге[/url]
Народ, доброго времени суток! На выходных наткнулся на обсуждение старых хитов и вспомнил про одну крутую вещь.
Вообще сейчас мало что нормального выходит, а тут как раз нашел актуальный билд с нормальной оптимизацией. У меня на десятке полетело без проблем. Круто, что в этой версии полная локализация на месте.
Для тех, кто в теме, подробности и описание можете глянуть тут: [url=https://x.com/SupremeGamesRU/status/2045255134356148398]Twitter[/url] . Пользуйтесь, пока ссылка живая.
Процесс лечения в таких учреждениях начинается с диагностики, которая включает в себя оценку физического и психоэмоционального состояния пациента. Затем составляется индивидуальный план терапии, который может включать в себя медикаментозное лечение, психологическую помощь и другие методы. Врач постоянно контролирует прогресс лечения, обеспечивая максимальную безопасность и эффективность терапии. В некоторых случаях требуется консультация психиатра для более глубокой оценки состояния пациента, а также сдача анализов, чтобы точно определить оптимальные методы лечения, особенно при наркомании.
Ознакомиться с деталями – [url=https://narkologicheskij-staczionar-sankt-peterburg.ru/]наркологическая клиника стационар санкт-петербург[/url]
mostbet ödəniş problemi [url=https://mostbet29401.help]https://mostbet29401.help[/url]
Выбор наркологического стационара в Санкт-Петербурге — это важный шаг, который требует внимательного подхода. Каждое медицинское учреждение имеет свои особенности, что может влиять на качество предоставляемых услуг. Важно учитывать как репутацию клиники, так и квалификацию врачей, а также доступные методы лечения и реабилитации.
Получить дополнительные сведения – [url=https://narkologicheskij-staczionar-sankt-peterburg-2.ru/]наркологический стационар[/url]
This article is a lifesaver in summer. For consistent cooling, ac repair optimized my system.
Appreciate the comprehensive advice. For more, visit dónde dormir en Arzúa .
Useful advice! For more, visit habitaciones con baño privado Arzúa .
aviator game mostbet [url=https://mostbet25863.help/]aviator game mostbet[/url]
Quick ignition restore on my car by using locksmith . Very trustworthy 24/7 locksmith service.
mostbet app se blochează [url=https://mostbet25863.help/]https://mostbet25863.help/[/url]
mostbet azərbaycan android [url=https://mostbet29401.help]https://mostbet29401.help[/url]
Thanks for the helpful article. More like this at mp3juice mp3 downloader .
mostbet cod bonus la înregistrare [url=http://mostbet25863.help/]http://mostbet25863.help/[/url]
mostbet android app yüklə [url=www.mostbet29401.help]www.mostbet29401.help[/url]
мостбет не загружается сайт [url=www.mostbet37461.help]www.mostbet37461.help[/url]
Процедура проводится опытными наркологами, которые подбирают необходимое лечение на основе индивидуальных особенностей пациента. В клинике «Частный медик 24» применяются только эффективные и безопасные препараты, которые помогают организму восстановиться и избавиться от токсинов. Важно помнить, что капельница от похмелья — это не просто временное облегчение, а важный шаг к долгосрочному восстановлению организма и профилактике алкоголизма.
Узнать больше – [url=https://kapelnicza-ot-pokhmelya-ekaterinburg-5.ru/]капельница от похмелья екатеринбург[/url]
1win комиссия элсом [url=https://1win38047.help/]https://1win38047.help/[/url]
mostbet tətbiqdə qeydiyyat [url=mostbet29401.help]mostbet29401.help[/url]
Процесс введения капельницы с медицинским контролем начинается с того, что медицинский специалист оценивает общее состояние пациента: измеряет артериальное давление, пульс, температуру тела, а также учитывает историю заболеваний. Это позволяет выбрать оптимальный состав растворов и препаратов для максимально быстрого и безопасного восстановления.
Ознакомиться с деталями – [url=https://kapelnicza-ot-pokhmelya-nizhnij-novgorod-1.ru/]капельница от похмелья анонимно в нижнем новгороде[/url]
mostbet приложение 2026 [url=www.mostbet37461.help]www.mostbet37461.help[/url]
1вин вход [url=1win38047.help]1вин вход[/url]
Смотреть здесь https://images.google.ge/url?q=https://letundra.com/en/news/?taglist=stockholm,tokyo
В Санкт-Петербурге услуга срочного вывода из запоя на дому востребована в ситуациях, когда состояние пациента ухудшается и требуется немедленная помощь. Врач проводит консультацию, оценивает общее состояние, длительность запоя и выраженность симптомов, после чего определяет тактику лечения при алкоголизме. При необходимости помощь оказывается в кратчайшие сроки, без ожидания госпитализации в стационаре. Услугу можно заказать заранее или срочно через сайт клиники.
Изучить вопрос глубже – http://vyvod-iz-zapoya-na-domu-sankt-peterburg-10.ru/
Выезд нарколога на дом — это медицинская услуга, которая подразумевает не только экстренную помощь, но и полноценное обследование пациента в комфортных для него условиях. В наркологической клинике «Частный медик 24» мы обеспечиваем профессиональное лечение на дому, которое включает в себя несколько важных этапов, чтобы стабилизировать состояние пациента, улучшить его самочувствие и снизить риски дальнейших осложнений.
Получить дополнительные сведения – [url=https://narkolog-na-dom-samara-2.ru/]запой нарколог на дом в самаре[/url]
This was very enlightening. For more, visit alojamiento en Arzúa .
This was very enlightening. For more, visit alojamiento económico Arzúa .
Стоимость капельницы от похмелья в Самаре зависит не только от прайса клиники, но и от состава инфузионной терапии, срочности выезда, времени суток и общего состояния пациента, включая возможные последствия алкоголизма. Базовые программы обычно включают осмотр специалиста, постановку капельницы и стандартный набор растворов для снятия интоксикации. Если состояние тяжелее, может потребоваться кодирование или лечение в стационаре, что увеличивает цену из-за расширенного состава препаратов и более длительного наблюдения.
Получить дополнительную информацию – [url=https://kapelnicza-ot-pokhmelya-samara-7.ru/]капельница от похмелья на дому в самаре[/url]
Needed a lock rekey past due at evening and locksmith dealt with it perfectly. Reliable 24/7 locksmith toughen.
The UV dye leak examine is underrated; how-to e book on mobile oil change in Greensboro was once tremendous.
Первичный осмотр включает оценку витальных показателей, уровня сознания, выраженности симптомов и факторов риска. После этого врач определяет объём вмешательства и приступает к терапии. В большинстве случаев применяется инфузионное лечение, направленное на восстановление водного баланса и выведение токсинов.
Получить дополнительную информацию – [url=https://narkologicheskaya-pomoshh-nizhnij-novgorod-8.ru/]скорая наркологическая помощь[/url]
Our Feasterville water bills spiked— plumber feasterville helped us find a Plumber Feasterville for silent toilet leaks.
ยินดีที่จะได้รับความคิดเห็นจากทุกคนเกี่ยวกับประสบการณ์ที่ผ่านมา ### ร้าน ขาย หลอด ไฟ รถยนต์ ใกล้ ฉัน
EV charging at apartments is possible—solutions via licensed emergency electrician Plano .
Ключевым преимуществом вызова нарколога на дом является то, что лечение начинается в тот момент, когда оно особенно необходимо. Близкие пациента не должны волноваться о поиске клиники или медицинских центров в экстренной ситуации — помощь будет оказана немедленно, с минимальными затратами времени и без стресса для пациента.
Подробнее можно узнать тут – [url=https://narkolog-na-dom-samara-1.ru/]нарколог на дом цена[/url]