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=mostbet89276.help]mostbet войти с телефона[/url]
mostbet авиатор [url=www.mostbet63740.help]www.mostbet63740.help[/url]
Although not essential, some casinos offer a range of bonuses in addition to the normal deposit match and free spins offers. Reload bonuses can appear, where subsequent deposits trigger bonus funds or spins. Cashback bonuses are also common. Can I play the Lucky Joker 10 Cash Spins slot machine in the USA? Mūsu spēļu automāti ir pielāgoti, lai tos varētu spēlēt no jebkuras ierīces. Piekļūsti Pafbet online kazino no sava mobilā klēpjdatora, tālruņa vai planšetdatora. Casino Friday have a unique reward system called the SpinBooster. You level up and are rewarded according to your average bet and on your favorite games. Free Spins are easy to come by and the level up meter offers some tantalizing free spins on Large Bet Sizes. Highrollers and Lowrollers are both generously rewarded and all your play is taken into account. When we tested the Casino, we received several Free Spins on Bonanza, Jammin’ Jars and Wolf Gold on bet sizes ranging from €2 to €4 per spin!!
https://technolifecore.com/2026/03/21-casino-bonus-review-for-players-in-the-united-kingdom/
A Brief History of Slot Games When the cascade ends, the symbol turns into a random multiplier from x10 to x1000. Get ready for a stroke of Irish luck with Lucky Penny, the enchanting new slot from 3 Oaks Gaming! Released on August 29, 2024, this video slot invites players into a vibrant world filled with charming leprechauns, shimmering gold, and opportunities for fantastic wins. As one of 3 Oaks’ latest creations, Lucky Penny promises a dynamic and engaging experience, building on the provider’s reputation for innovative iGaming. The real charm of the lucky penny slot lies in its unique features designed to enhance gameplay. Here are some standout attributes: Destroyed symbols will be replaced by random symbols. during a cascade The cascade will continue until there are no more SCATTER winning combinations. Symbols cannot be destroyed.
mostbet рабочий сайт Кыргызстан [url=mostbet89276.help]mostbet89276.help[/url]
קיבלנו מדריך תחזוקה בסוף – שירות נדיר. קישור: חיפוי אלוקובונד למבני תעשייה
Can I simply say what a relief to discover somebody who actually understands what they’re discussing on the net. You definitely realize how to bring a problem to light and make it important. A lot more people must look at this and understand this side of the story. I was surprised you’re not more popular given that you certainly possess the gift.
buy valium online without prescrition xxx pornhub pills
If your bunion returned after surgery, a foot and ankle surgeon can assess causes and revision options. Rahway NJ foot and ankle surgeon
Important reminder: never consent to a search without understanding your rights. A drug crimes lawyer can advise— car accident lawyer .
If your dog hates rain, short incentive walks help; scheduled on in-home dog walking service Chandler .
Today, I went to the beach front with my kids. I found a sea shell and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She placed the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear. She never wants to go back! LoL I know this is totally off topic but I had to tell someone!
betify avis
Muy útil, gracias; recomiendo cerrajero como cerrajeros baratos Barcelona.
What’s up, yes this article is actually nice and I have learned lot of things from it concerning blogging. thanks.
online casino ohne oasis
Ребят, всем привет! На днях наткнулся на обсуждение старых хитов и решил перекачать старую добрую игруху.
Вообще сейчас мало что нормального выходит, а тут как раз нашел актуальный билд с нормальной оптимизацией. Даже на моем старом ноуте фпс стабильный. Особенно порадовало, что все баги пофикшены.
Если кому тоже приспичило поиграть, полный обзор и файлы нашел на этом ресурсе: [url=https://mods-menu.com/6109-gtax-furious-descent-h-yarostnoe-snizhenie-mod.html]GTAx Furious Descent[/url] . Пользуйтесь, пока ссылка живая.
What’s up everyone, it’s my first pay a quick visit at this site, and article is in fact fruitful designed for me, keep up posting such articles or reviews.
buy cannabis online for xxx adult porn video
מסכים לגבי יחס עוגן-מותג. למי שמבולבל, יש הסבר קצר וקליל ב- חברת קידום אתרים .
For anyone unsure if a crack is structural or cosmetic, getting an expert opinion is worth it. I used drywall repair denver co to locate a contractor who evaluated our cracks before we went ahead with repainting.
Well done! Discover more at cocinas Granada .
Great tips! For more, visit pet friendly Arzúa .
I used reliable movers for my final relocation and it used to be worthy every penny. If you’re comparing selections, get started with long distance moving services .
This was quite informative. For more, visit aluminio RPT rotura de puente térmico .
мостбет скачать android [url=www.mostbet63740.help]www.mostbet63740.help[/url]
1win app кор намекунад [url=www.1win20938.help]www.1win20938.help[/url]
This is a great breakdown of the current landscape. We recently migrated to a new platform and found that setting up automated anomaly alerts saved us from a massive bill after a developer accidentally left a huge cluster running over the weekend Helpful site
This was very enlightening. More at nutrióloga a domicilio Saltillo .
мостбет Токмок [url=http://mostbet89276.help]мостбет Токмок[/url]
melbet prédicteur aviator [url=https://melbet57184.help/]https://melbet57184.help/[/url]
I’ve been following this ranking closely, and it’s interesting to see Accenture holding such a strong lead for 2026. Given the current focus on budget optimization, I’m curious how they compare on FinOps specifically Click here!
Witness statements make a huge difference— car accident lawyer offers tips on collecting them properly.
I sent a spoliation letter to preserve evidence using a template from car accident lawyer .
Great explanation of different mesh materials. commercial window screen repair company brought samples to compare in person.
This is a solid breakdown of the current tools. I have found that the biggest challenge is always getting engineering teams to actually care about the data agentless cost allocation
melbet казино фриспины [url=http://melbet27495.help/]http://melbet27495.help/[/url]
Interstate movement went easily because of experienced skilled movers from southwest movers for long distance .
It’s interesting to see how the rankings have shifted for 2026. I’ve been keeping an eye on Deloitte, and their focus on multi-cloud governance is definitely a major differentiator for large-scale operations right now cloud governance for large scale
This was quite useful. For more, visit marblus granite countertop fabricator .
Great breakdown of the current landscape. We’ve been struggling with visibility in our multi-cluster environment lately managed finops vs in-house
I’ve been tracking these rankings, and honestly, seeing Deloitte high on the list makes sense given their scale. That said, I’m always wary of how these firms handle multi-cloud governance in practice versus on paper AWS consulting partner
If your roadside plan is slow, bay harbor emergency towing shall be sooner in Bay Harbor Islands.
וואו, ממש אהבתי את הפרויקט האחרון שלכם בתחום חיפוי מבנים באלוקבונד! שווה לבקר גם ב- חיפוי מבנים באלוקבונד לפרטים והשראה.
Great breakdown of the current tool landscape. We recently migrated to a more automated approach for Kubernetes rightsizing, and it saved us a ton of wasted spend native vs third party cost tools
mostbet қоидаи фрибет [url=www.mostbet40827.help]www.mostbet40827.help[/url]
It’s interesting to see how the rankings have shifted for 2026. I’ve been keeping a close eye on Deloitte lately, especially regarding their approach to multi-cloud governance as infrastructures get more complex serverless consulting
1win update app [url=http://1win90843.help/]http://1win90843.help/[/url]
Your lineup technique around curls is clean. I referenced a curl guide on best barbershop Richardson .
Капельница от похмелья в Нижнем Новгороде: снятие симптомов похмелья, восстановление и поддержка под наблюдением врачей в наркологической клинике «Похмельная служба»
Выяснить больше – https://kapelnicza-ot-pokhmelya-nizhnij-novgorod-2.ru
This is a solid breakdown of the current tools. I’ve found that automated rightsizing for K8s is a total game changer, but it’s easy to get lazy with the limits FinOps tools comparison
Bathroom circuits need GFCI protection— generator installation Lowell helped me find a qualified installer quickly.
It’s interesting to see how the rankings are shifting as we head into 2026. I’ve been following Deloitte’s recent projects, and their focus on FinOps has definitely been a differentiator compared to some of the other firms on this list https://www.livebinders.com/b/3704984?tabid=a8cb704a-b79f-bdf0-a05f-e176d7ec7a14
Please let me know if you’re looking for a author for your weblog. You have some really good articles and I think I would be a good asset. If you ever want to take some of the load off, I’d absolutely love to write some content for your blog in exchange for a link back to mine. Please send me an e-mail if interested. Many thanks!
casino ohne oasis
One of the most compelling reasons to choose spray foam is its long lifespan and resistance to settling or degrading. That means consistent performance year after year. I saw this point emphasized on spray foam insulation contractors .