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
}
купить задание для студентов [url=kupit-kursovuyu-21.ru]kupit-kursovuyu-21.ru[/url] .
https://aviator-game.biz
Personally, I’ve used a bunch of iGaming sites lately, and it’s interesting how many beginners deposit money without reading any reviews. If anyone’s looking for a helpful review of important casino features, this overview worked well for me: [url=https://telegra.ph/Fortunes-Shift–Tracking-monopoly-big-baller-results-today-for-Top-Tier-Wins-11-21″]Telegraph-URL[/url] . Visit our links.
It’s nicely written and shows what matters most before you start playing. It’s worth your time if you prefer to play safely.
купить курсовая работа [url=www.kupit-kursovuyu-23.ru]www.kupit-kursovuyu-23.ru[/url] .
этот сайт [url=https://krab-1.cc]krab cc at[/url]
Одежда из Китая — таможенное оформление одежды москва без вопросов
https://gitea.fcliu.net/mistyhawthorn2/misty1994/wiki/tamozhennoe-oformlenie-7u
Game-Lands https://game-lands.ru/ – это сайт с подробными гайдами и прохождениями для новичков и опытных игроков. Здесь вы найдете лучшие советы, топовые билды и сборки, точное расположение предметов, секретов, пасхалок, и исправление багов на релизах. Узнаете, как получить редкие достижения, что делать в сложных моментах и с чего начать в новых играх. Всё, чтобы повысить скилл и раскрыть все возможности игровых механик.
Аудиокниги стали неотъемлемой частью современной культуры чтения, позволяя наслаждаться литературой в дороге или во время домашних дел. Портал Audiomap.ru собрал тысячи бесплатных аудиокниг различных жанров — от романтического фэнтези до детективов и постапокалипсиса. Удобная навигация по тематикам помогает быстро найти произведение по душе: любовные романы, ужасы, юмористическую фантастику или образовательную литературу. Заходите на https://audiomap.ru/ и включайте интересную аудиокнигу прямо сейчас без регистрации и скачивания — достаточно выбрать произведение и нажать кнопку воспроизведения в браузере.
https://mebel-24.blogspot.com/2025/12/2025.html?m=1
помощь в написании курсовой работы онлайн [url=https://kupit-kursovuyu-27.ru/]kupit-kursovuyu-27.ru[/url] .
написать курсовую на заказ [url=kupit-kursovuyu-29.ru]написать курсовую на заказ[/url] .
Самый лучший таможенный брокер москва, проверено временем
https://hayhat.net/tarenheine4807
написание учебных работ [url=kupit-kursovuyu-28.ru]kupit-kursovuyu-28.ru[/url] .
заказать курсовую работу качественно [url=http://kupit-kursovuyu-22.ru]http://kupit-kursovuyu-22.ru[/url] .
стайлер дайсон купить официальный сайт [url=fen-d-3.ru]стайлер дайсон купить официальный сайт[/url] .
Таможенное оформление грузов москва — профи своего дела
https://kingdomshiftmedia.com/@reginaldtic164?page=about
free porn [url=www.www.w20-germany.org]free porn[/url] .
Большое количество новых игр, коллекция постоянно обновляется
драгон мани отзывы
Приятные ежедневные бонусы помогают держаться в игре
драгон мани казино
выберите ресурсы [url=https://motifri.com/]кракен ссылка kraken[/url]
Радует, что можно пополнять разными способами
dragon
[url=https://double-down.casino/bonus/]double down casino codes[/url]
куплю курсовую работу [url=www.kupit-kursovuyu-24.ru]куплю курсовую работу[/url] .
Таможенное оформление грузов москва под ключ
https://mimrent.com/author/esperanzakiern/
стоимость написания курсовой работы на заказ [url=http://kupit-kursovuyu-26.ru/]http://kupit-kursovuyu-26.ru/[/url] .
казино без верификации документов Чувствуете, что сегодня ваш день? Игровые автоматы готовы подарить вам незабываемые острые ощущения! Каждый спин – это шаг к крупному выигрышу или просто захватывающее приключение. Позвольте себе окунуться в мир азарта и испытать свою фортуну!
курсовая заказ купить [url=www.kupit-kursovuyu-25.ru]курсовая заказ купить[/url] .
Ищете купить накрутку просмотров на вк видео? Сервис seoprofi.org специализируется на безопасной накрутке просмотров для Rutube и VK Видео, а также увеличении посещаемости сайтов с помощью живого трафика. Система гарантирует равномерное увеличение метрик с органичным удержанием в диапазоне 40-80%, способствуя продвижению материалов в рекомендательные ленты и повышению ранжирования без угрозы санкций. Ценовая политика начинается с 1200 рублей за тысячу единиц посещений, старт проектов осуществляется за 1-3 часа при наличии поддержки 24/7.
https://iph.uog.edu.et/relaxing-after-work/#comment-9628
Здесь легко начать играть даже новичкам — всё интуитивно понятно
драгон
https://www.live4cup.com/f-sp2034483-.html#p2034483
https://coe.uog.edu.et/events/build-education-website-using-wordpress/#comment-9497
http://probki.kirov.ru/content/reshenie-2392024-2#comment-35086210
Кэшбек действительно возвращается, что очень приятно
drgn
Поддержка помогает реально, а не отвечает шаблонами
dragon money обзор
Таможенное оформление грузов москва — профи своего дела
https://onedance.tv/@egbnatalia5819?page=about
курсовая работа купить москва [url=http://kupit-kursovuyu-21.ru/]http://kupit-kursovuyu-21.ru/[/url] .
Personally, I’ve used a bunch of gambling platforms recently, and it’s always surprising how many people jump in without verifying anything. If you’re interested in a helpful review of key platform details, this review helped me a lot: [url=https://telegra.ph/Joac%C4%83-inteligent-Plinko-sfaturi-strategii-%C8%99i-plinko-pareri-pentru-c%C3%A2%C8%99tiguri-maxime-la-casino-11-20″]Telegraph-URL[/url] . Visit our links.
It’s nicely written and highlights key risks before funding your account. I recommend giving it a look if you want to make better choices.
Языковой образовательный центр в Алматы и Атырау предлагает современное обучение английскому и другим языкам по доступным ценам для взрослых и детей любого уровня подготовки. Результативные программы совершенствования разговорных навыков, грамматических и лексических компетенций внедряют квалифицированные педагоги с многолетней практикой преподавания. Подробная информация о программах представлена на сайте https://www.ctgroup.kz/ Учебное заведение организует коллективные курсы численностью до 6 учащихся и персональные занятия в технологичных классах с обеспечением сопровождения до получения целевого балла.
заказать дипломную работу в москве [url=https://www.kupit-kursovuyu-23.ru]https://www.kupit-kursovuyu-23.ru[/url] .
nugget porn videos [url=https://irinathediva.dk/]nugget porn videos[/url] .
Super clanek! Nedavno jsem objevil Spinmama Casino CZ a nabidka je opravdu lakava. Nabizi uvitaci bonus 150 %, bonus bez vkladu, free spiny, cashback, VIP klub, turnaje, loterie a dalsi promo akce, ktere nadchnou kazdeho hrace. Velmi me zaujaly jejich herni souteze a automaty – ceske online casino na opravdu vysoke urovni. Chcete-li zkusit nove a bezpecne online casino, mrknete sem: [url=https://x.com/DroidGamersRu/status/1998152767966212145]Twitter[/url] . Rozhodne to stoji za to a prinese vam spoustu zabavy a vyher.
[url=https://stickermaatje.nl/?page=product-designer&product_id=12]Hrajte ve Spinmama Casino CZ: bonusy, turnaje a loterie[/url]
[url=http://dmonster592.dmonster.kr/bbs/board.php?bo_table=qna&wr_id=580069]Spinmama Casino CZ[/url]
[url=https://ibisnewsletter.org/Edicion-del-genoma-sin-objeciones-eticas#forum8280]Spinmama Casino CZ 2025 – cashback, free spiny a odmeny[/url]
16605da
Таможенная очистка москва — быстро, чётко, недорого
https://purednacupid.com/@stephanjoslyn
написание учебных работ [url=kupit-kursovuyu-27.ru]kupit-kursovuyu-27.ru[/url] .
стайлер дайсон для волос с насадками купить официальный сайт цена [url=fen-d-3.ru]fen-d-3.ru[/url] .
курсовая работа купить [url=www.kupit-kursovuyu-29.ru]курсовая работа купить[/url] .
Таможенное декларирование москва — без правок и задержек
https://seniorcaring.net/author/tresaaiston851/
Настоящая русская баня – это особая атмосфера, целебный пар и душевное тепло, для создания которых необходима качественная печь. Завод ПроМеталл специализируется на производстве чугунных печей серии «Атмосфера», сочетающих передовые технологии и традиционный подход к банному делу. Чугунные печи служат десятилетиями, быстро прогревают помещение и долго держат тепло, а разнообразие моделей позволяет подобрать вариант для парилки любого объема. В официальном интернет-магазине https://prometall.shop/ представлены печи в сетке, каменной облицовке и комбинированные варианты, а также отопительные печи для дома: «Бахта», «Маэстро», «Тайга PRO». Компания предлагает полный комплекс услуг – от профессиональной консультации до доставки по Москве и установки под ключ, делая мечту о собственной бане доступной и реальной.
Honestly, I’ve tested a bunch of gambling platforms over the years, and it’s always surprising how many people sign up without checking proper reviews first. In case you want a simple explanation of important casino features, this write-up helped me a lot: [url=https://telegra.ph/Soaring-Profits-Master-the-Aviator-bet-Game-with-Strategies-Downloads–Winning-Predictors-11-25″]Telegraph-URL[/url] . Visit our links.
It’s pretty straightforward and explains what to watch out for before making a deposit. Totally worth checking out if you want to make better choices.
купить задание для студентов [url=http://kupit-kursovuyu-28.ru/]http://kupit-kursovuyu-28.ru/[/url] .