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
}
Qué buen post. Hace tiempo que vengo probando estrategias en cuentas demo para no arriesgar tanto, y la verdad es que la fluidez de TradingView cambió bastante el panorama para nosotros metatrader 5 vs ctrader comparison
If your street is narrow, note it in the order—booking forms on roll off dumpster rental near me make it easy.
Appreciate the comprehensive advice. For more, visit memory care .
В Санкт-Петербурге вывод из запоя на дому используется в ситуациях, когда состояние пациента требует медицинской помощи, но позволяет обойтись без лечения в стационаре. Врач проводит консультацию, оценивает длительность запоя, выраженность симптомов и общее состояние, анализируя данные пациента, после чего принимает решение о тактике лечения при алкоголизме. При необходимости можно оформить вызов специалиста или заказать услугу заранее.
Углубиться в тему – [url=https://vyvod-iz-zapoya-na-domu-sankt-peterburg-11.ru/]вывод из запоя на дому[/url]
Workers compensation not only protects employees but also employers, which is often overlooked. Georgia Workers Comp
Энтеогены — вещества и растения, которые в разных культурах использовались в духовных и ритуальных практиках. Сегодня интерес к ним растёт благодаря исследованиям влияния на сознание и психологическое состояние. Перед тем как искать или покупать энтеогены, важно изучить законодательство своей страны, возможные риски для здоровья и консультироваться со специалистами. Ответственный подход и безопасность должны быть на первом месте.[url=https://entheogenessence.site/product/kupit_jivoy_kaktus_echinopsis_lageniformis_bolivian_torch_cactus-714/]купить смесь безтабачного рапэ
[/url]
Useful citations list. I’ve seen Phoenix SEO dive after consistent NAP clean-up– guide here: SEO company .
Holiday plumbing disaster? Yuba City homeowners, keep Emergency plumbing Yuba City handy for immediate response.
Got my long distance moving timeline dialed in—8 weeks out to moving day—thanks to Dacula moving businesses .
Pet odor removal success! Found a top Houston carpet cleaner at tile and grout cleaning .
Thanks for the tips — preventive care from https://www.google.com/maps?cid=1576006801368323719 helped avoid a breakdown in Wood River.
Cat grooming can be tricky; cage-free grooming has certified cat groomers who were great.
Thanks for the clear explanations. For dependable repairs in Manor, consider HVAC contractor in Manor TX for AC Repair in Manor TX.
The cost breakdown really helps. I compared a few quotes and Navien tankless installer Chicago was best in Chicago.
Great suggestions. For efficient AC repair in Canton MA, residential AC repair Canton offers professional help.
Understanding medical benefits under workers compensation is crucial, and you covered it well! Workers’ Comp Lawyer
Helpful and well-written. For experienced AC Repair in Fayetteville, reach out to air conditioner maintenance Fayetteville .
Great tips. For quick, reliable AC repair in Lewisville, call AC Repair in Lewisville .
Panel clearance requirements often get ignored; dimensions at nearby electrician Spicewood .
We’ve seen success with local PR in Phoenix– press pitch design templates on SEO company .
Excelente artigo, muito esclarecedor para quem está a começar nestas andanças. Tenho usado a DeGiro, mas confesso que a parte da declaração do IRS me deixa sempre de pé atrás comparativo XTB vs Interactive Brokers
I’ve been testing Grok-2 lately, and the performance feels surprisingly snappy. Seeing that benchmark score of 94% on the CJR really highlights how quickly xAI is iterating compared to the competition python api.x.ai chat completions
This was a fantastic read. Check out garage door repair for more.
Excelente artigo! Eu comecei a usar a Trade Republic recentemente e estou a gostar bastante da simplicidade da plataforma. No entanto, tenho sempre algum receio da burocracia na hora de declarar tudo às Finanças https://delta-wiki.win/index.php/Quero_evitar_custos_de_c%C3%A2mbio:_o_que_devo_fazer_antes_de_comprar_a%C3%A7%C3%B5es_em_USD%3F
Muy buen artículo, ayuda bastante a tener un panorama claro de cómo viene la mano para el 2026 Helpful hints
I had inconsistent temperatures across rooms; hvac company Kansas City, MO balanced the system and checked dampers.
Эта разъяснительная статья содержит простые и доступные разъяснения по актуальным вопросам. Мы стремимся сделать информацию понятной для широкой аудитории, чтобы каждый мог разобраться в предмете и извлечь из него максимум пользы.
Прочесть заключение эксперта – [url=https://zagar-ok.ru/bez-rubriki/kak-spirtnoe-razrushaet-vashu-kozhu]нужен нарколог на дом[/url]
I’ve been curious about the new tiers for Grok, especially with the SuperGrok Heavy option at $300 a month. That’s a pretty steep jump compared to other models on the market right now Grok code execution tool tutorial
мостбет способы оплаты [url=www.mostbet64028.help]www.mostbet64028.help[/url]
Excelente resumo sobre as plataformas disponíveis por cá. Eu comecei a usar a Degiro recentemente pela facilidade, mas confesso que a parte do preenchimento do IRS ainda me deixa bastante confuso e com algum receio de errar na declaração anual investir em empresas portuguesas via corretora
Found some extensive recommendations for our kin via checking the improvement listings here—don’t pass over Housing Development Homes for sale .
Community facilities seem to be amazing for households. Anyone else all for those new builds? Housing Development Homes for sale
Thanks for the replace on lot sizes and anticipated timelines. How do we e-book a travel? Maybelle Manor
Gostei bastante do artigo, obrigado. Eu uso a XTB para investir em ETFs, mas confesso que ainda tenho alguma dificuldade com a parte fiscal https://caidenulcg978.wpsuo.com/xtb-tem-conta-demo-de-4-semanas-com-100-000-eur-como-usar-isto-sem-cair-em-armadilhas
Qué buen artículo, la verdad ayuda mucho para los que estamos empezando. Justo estuve probando XTB porque vi que piden 0 USD de depósito mínimo y se me hizo una excelente opción para arrancar https://wiki-saloon.win/index.php/Interactive_Brokers_vs_XTB:_%C2%BFpropiedad_real_o_plataforma_m%C3%A1s_simple%3F
Neighborhood ambiance—noise levels, shade from trees, and street activity—shapes everyday living. Camelot Village
Che, muy buen artículo. Con el panorama que tenemos este año, operar se puso un poco complejo. Yo vengo usando TradingView para el análisis gráfico, pero me cuesta encontrar un broker que no te fulmine con las comisiones al depositar apenas 50 USD https://emilianoakpv703.wpsuo.com/capital-com-con-tradingview-integrado-es-realmente-lo-mismo-que-operar-en-tradingview
The focus on calibration devices compatibility in California is area on. Learn more via EML Calibration .
Ótimo artigo, ajudou bastante a esclarecer as minhas dúvidas sobre onde começar. Eu costumo usar a DEGIRO, mas confesso que a parte da declaração de impostos me deixa sempre um pouco nervoso https://brenda-thomas89.raindrop.page/bookmarks-70634235
Glad seeing conversation evolving surrounding intersectionality prevalent experiences informing perspectives shared widely across platforms enabling deeper underst Georgia Workers’ Comp Lawyer
Коллеги, хороший материал о том, почему SEO — это инвестиция, а не расход. В отличие от контекстной рекламы, где трафик пропадает сразу после остановки бюджета, SEO продолжает работать годами. Автор подробно разбирает техническую оптимизацию, работу с семантикой и важность качественного контента. Особенно ценно, что есть раздел про типичные ошибки. Почитайте: https://picpig.ru/2026/05/04/seo-kak-fundament-biznesa-strategii-rosta-v-uslovijah-zhjostkoj-konkurencii/
If reliability is key, local auto shippers Naperville has consistently met my Naperville timelines.
Muy interesante el análisis sobre las plataformas para este 2026. Yo estuve probando algunas cuentas demo últimamente para no arriesgar tanto, pero todavía me cuesta decidirme interactive brokers tws guide for beginners
Qué buen artículo, ayuda mucho para los que apenas vamos empezando este 2026. Yo he estado checando XTB y la verdad se me hace muy accesible por eso de que no piden depósito mínimo inicial, o sea, puedes empezar con 0 USD https://titusytxg856.image-perth.org/que-broker-conviene-para-operar-usd-mxn-en-2026-guia-para-el-trader-en-mexico
мелбет кз скачать [url=www.melbet17638.help]www.melbet17638.help[/url]
http://aida-grafik.de/
Das Projekt Aida Grafik praesentiert sich als ein professionelles Unternehmen fokussiert auf den nationalen Rahmen Deutschlands, das anbietet professionelle Begleitung fuer alle die Ergebnisse suchen, sich auszeichnend durch auf Ergebnisse. Mehr Informationen auf dieser Seite.
juego lucky jet sweet bonanza [url=https://www.sweet-bonanza39147.help]https://www.sweet-bonanza39147.help[/url]
درود، خودم امروز هنگام گشتن آنلاین به
این صفحه رسیدم و صادقانه نظرم رو جلب کرد.
اطلاعاتش بهدردبخور بود و کمتر همچین
سایتی ببینم. احساس میکنمبرای افراد مختلف کاربردی باشه.
برای کسایی که دنبال محتوای مفید هستن بد نیست سر بزنن.
در کل راضیکننده بود و قطعا باز هم سر میزنم
جمعبندی
برای کسایی که دنبال
بازی انفجار
درگیر هستن
این سایت
میتونه واقعاً
انتخاب قابل قبولی باشه
چیزی که جلب توجه میکنه اینه که
اسمهایی مثل
enfejɑr online
و
sibbet معروف
مطرح شدن
در نهایت
ارزش داشت
و
باز هم حتما
سر میزنم دوباره
.
Feel free to surf to mmy wеbpɑge; سایت خبری
¡Qué buen artículo! Estoy empezando a investigar opciones para invertir desde México y me llama bastante la atención XTB. Me parece súper bien que tengan un depósito mínimo de 0 USD, así uno puede probar la plataforma sin tanto riesgo inicial https:///Aqu-tienes-una-propuesta-con-tono-editorial-basada-en-mi-experiencia-35a17c1123af80af8173ee1fb853ceba
The perennial garden layout is exactly what I want. I’ll see if shrub planting can design it.