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
}
I found a wealth of knowledge about different types of bail bonds at los angeles bail bonds —definitely worth a visit!
В данной статье мы поговорим о будущем медицины, акцентируя внимание на прорывных разработках и их потенциале. Читатель узнает о новых подходах к лечению, роли искусственного интеллекта и возможностях персонализированной медицины.
Изучить рекомендации специалистов – [url=https://nashipochki.ru/pohmele-i-effektivnye-sposoby-s-nim-spravitsya/]Наркологическая клиника «Похмельная служба» в Краснодаре.[/url]
https://white-house-fight-insight.lovable.app/
The Ultimate Fighting Championship White House event etches itself into history on June 14, 2026 — marking the first UFC show held on the grounds of the White House in the nation’s capital. Officially branded UFC Freedom Fights 250, the night will be topped by Ilia Topuria taking on Justin Gaethje for the lightweight title, with ex-two-division champion Alex Pereira moving up to heavyweight to square off against Ciryl Gane in the night’s co-headliner.
Informative examine. If you want non-destructive entry, 24 hour locksmith dealt with it professionally for me.
рулонные шторы электрические [url=https://elektricheskie-rulonnye-shtory99.ru]рулонные шторы электрические[/url]
Helpful read about dust control during renovations; our containment approach is outlined at commercial duct cleaning .
It’s nice to see transparent pricing discussed. cheap rubbish removal Sydney honored their estimate.
Lighting is crucial in bathroom renovations! Layering lights can create an amazing ambiance. Learn more at bathroom renovations .
Useful article — for quick advertisement or residential lock answers, car ignition repair introduced very good service.
Good call on matching shingle batches. My contractor from local roof repair ensured consistency.
If you want a local rodent control company near me that does inspections and exclusions, try rat control Los Angeles .
Appreciate the steering on reusing vs. changing flashing. trusted roof installation company replaced the place crucial, reused in which sound.
https://white-house-fight-guide.lovable.app/
A seven-fight slate. Four weight classes. A pair of extended championship processionals. A comprehensive main card analysis for UFC at the White House for the event when Topuria takes on Gaethje on the South Lawn of the White House and Pereira goes for a third belt opposite Gane — every number, every angle, every key insight.
Thanks for sharing. Finding metal roofing near me gave me a clearer idea of standing seam vs. corrugated panels. metal roofing companies near me
Этот документ охватывает важные аспекты медицинской науки, сосредотачиваясь на ключевых вопросах, касающихся здоровья населения. Мы рассматриваем свежие исследования, клинические рекомендации и лучшие практики, которые помогут улучшить качество лечения и профилактики заболеваний. Читатели получат возможность углубиться в различные медицинские дисциплины.
Заходи — там интересно – [url=https://cultmoscow.com/poleznoe/zdorove/trezvyj-vzglyad-na-trendy-pochemu-osoznannoe-potreblenie-v-2026-godu-kasaetsya-ne-tolko-ekologii-no-i-zdorovya/]Наркологическая клиника «Похмельная служба» в Краснодаре.[/url]
Здравствуйте!
Гибкость — главный показатель зрелости. Не важно, с какой темой вы работаете: умение проверять факты и адаптироваться делает вас устойчивым к переменам. Это навык, который заменяет десятки готовых рецептов.
Отель «Заря» предлагает номера рядом с морем. Чистота и базовый комфорт для гостей города.
Полная информация по ссылке – https://hotel05-zarya.ru/about.html
гостиница заря махачкала, гостиница рядом с набережной каспий, гостиница заря махачкала хаджи булача 87
гостиница ак гель махачкала, [url=https://hotel05-zarya.ru/guide/rhodope-boulevard.html]Отель Заря: официальный сайт | Родопский бульвар в Махачкале[/url], гостиница заря махачкала хаджи булача 87
Удачи и хорошего роста в топах!
Всё, что по-настоящему важно, требует времени.
[url=https://blogs.monash.edu/elearnaccfin/rss-subscribe-1/comment-page-5677/#comment-375861]Отель у моря — без переплат[/url] d104129
وقت بخیر، بنده مدتی قبل اتفاقی تو اینترنت با این وبسایت رسیدم
و راستش رو بخوایدتحت تاثیر قرار گرفتم.
مطالبش کاربردی بود و خیلی کم پیش میاد همچین وبسایتی
ببینم. احساس میکنم برای کاربرای زیادی مفید باشه.اگر به دنبال یه سایت خوب
هستن حتما برن ببینن. در مجموع راضیکننده بود
و احتمالا دوباره استفاده میکنم
در یک نگاه کلی
برای افرادی که تمایل دارن
بازیهای شانسی
میخوان امتحان کنن
این مجموعه آنلاین
میتونه یکی از گزینهها باشه
انتخاب خوبی باشه
از طرف دیگه
پلتفرمهایی مثل
دامنه еnfejaronline
و
sibbet آنلاین
هم در این حوزه فعال هستن
در آخر کار
مناسب بود
و
باز هم حتما
بازدید میکنم
.
Here is my website :: نقش تکنولوژی و اصول بنیادین در موفقیت بازیکنان
Snelle communicatie en correcte offerte van Dakwerken Gent toen mijn dak lekkage had na zware regenbuien in Gent.
Wonderful blog! I found it while searching on Yahoo News. Do you have any suggestions on how to get listed in Yahoo News? I’ve been trying for a while but I never seem to get there! Many thanks
The thermostat calibration trick worked! If not, call furnace maintenance in Charlotte like I did.
Appreciate the comprehensive advice. For more, visit alojamiento en Arzúa .
Surprised by how much I’ve learned from ### anyKeyword###—definitely worth bookmarking! los angeles bail bonds
Let’s not forget sunscreen when heading out for our first splash on **Winnipeg Pool Opening** # # anyKeyWord ## pool opening
Appreciate the useful tips. For more, visit alojamientos en el Camino Francés .
Just had some major repairs done by # anyKeyWord#, and they exceeded my expectations. residential plumbing company Sandpoint
I enjoyed this article. Check out plataforma de abogados online for more.
Helpful wisdom — save a safe emergency locksmith like 24 hour locksmith ahead of you desire one.
This is spot on. For bent tracks, Garage Door Repair Mesa AZ repaired ours without needing a full replacement. install garage doors in Mesa
вызов нарколога на дом цена [url=https://narkolog-na-dom-voronezh-12.ru]вызов нарколога на дом цена[/url]
Thank you! If your remote range is poor in Tucson, interference or a failing antenna might be the culprit. new garage door installation
Very useful. I advocate after hours locksmith for emergency locksmith desires and speedy response times.
Typical projects finish overnight with minimal disruption—learn more at commercial duct cleaning .
Love the focal point on eco-friendly items. If you desire green industrial cleansing in MN, determine out office cleaning company for Health Point Cleaning Solutions of Minnesota.
Have you ever thought about creating a theme for your bathroom? It could be fun and unique; find inspiration over on #ANYKEYWORD# bathroom renovations
Moving to Lackawanna on a shoestring— Local movers Buffalo had a few cheap movers that offered free shrink wrap and basic protection.
Good recommendation about licensing and warranties. For rapid response occasions, check out hunting “plumber close to me” and visit plumber in Clinton, Tennessee .
This article answers so many questions people have about bail bonds—well done! bail bond
This is highly informative. Check out Glass Railings Services for more.
Clear guidance on refrigerant levels and leaks. Fayetteville residents can find certified techs on AC installation Fayetteville .
Could someone share their experiences from previous **Winnipeg Pool Openings** so we know what to expect # # anyKeyWord ## pool opening
Thanks for the helpful advice. Discover more at Paver cleaning .
Helpful article. For immediately rekeying or lockouts, house locksmith near me was once activate and courteous.
Informative — emergency locksmiths like open house are obligatory to have on call.
DA88 là nền tảng giải trí trực tuyến được phát triển theo hướng tiện lợi, hiện đại và tối ưu trải nghiệm cho người dùng. Website gây ấn tượng với giao diện dễ thao tác, tốc độ truy cập nhanh và bố cục nội dung được sắp xếp rõ ràng trên nhiều thiết bị bbc
For anyone planning a residential move in Pflugerville, TX, label boxes by room and priority. I found moving companies pflugerville tx super helpful for coordinating delivery windows.
LUCKY88 là nền tảng giải trí trực tuyến được định hướng theo phong cách hiện đại, dễ sử dụng và tối ưu trải nghiệm cho người dùng. Website nổi bật với giao diện gọn gàng, tốc độ truy cập nhanh và khả năng vận hành ổn định trên nhiều thiết bị bbc
Just completed a condo move downtown WPB; the movers I found via bald eagle moving protected my furniture and the building’s elevators perfectly.
For high-rise buildings, we manage logistics and permits: commercial duct cleaning .
My latest renovation focused on accessibility, making it user-friendly for all ages—more resources available at bathroom renovations !
LUCKY88 là nền tảng giải trí trực tuyến được xây dựng theo hướng hiện đại, chú trọng sự tiện lợi và trải nghiệm ổn định cho người dùng bbc