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
}
Good resource — Los Angeles homeowners can schedule inspections with cheap rodent control near me .
We asked for quiet hours due to WFH meetings— one-time house cleaning service Sarasota was considerate.
” Catching issues early means fewer headaches later on—it pays off over time!” affordable garage door repair near me
I found this very helpful. For additional info, visit Daigle Roofing and Construction .
1000 guineas best horse racing online betting – https://horse-Betting.com/ – today
Just had my pipes fixed by a local plumber in Sandpoint ID. They were awesome! Check out full-service plumbing Sandpoint Idaho for similar services.
Сервис предлагает комплексный подход к организации поездок, решая ключевые задачи современного путешественника:
* Умный поиск и подбор. Забудьте о долгом сравнении сотен сайтов. Трипскан анализирует предложения и помогает найти оптимальные варианты перелётов и проживания, экономя ваше время и деньги.
[url=https://trip75c.cc]trip scan [/url]
* Конструктор маршрутов. Создавайте уникальные путешествия под свои интересы. Хотите гастрономический тур по Италии или треккинг в горах Алтая? Сервис поможет соединить все точки на карте в логичную и насыщенную поездку.
* Централизованный мониторинг. Все ваши бронирования — от авиабилетов до столика в ресторане — собираются в едином пространстве. Вы всегда будете знать, что и когда запланировано.
[url=https://trip75c.cc]tripscan сайт [/url]
* Своевременные напоминания. Сервис не даст вам пропустить важное: время вылета, окончание регистрации или check-out в отеле. С TripScan вы всегда будете пунктуальны.
Как начать работу с сервисом?
[url=https://trip75c.cc]трипскан [/url]
Начать пользоваться всеми преимуществами платформы очень просто. Для этого необходимо выполнить трипскан вход в ваш личный кабинет.
1. Перейдите на трипскан сайт через ваш браузер.
[url=https://trip75c.cc]trip scan [/url]
2. Нажмите кнопку «Войти» или «Регистрация».
3. Авторизуйтесь, используя свой email или социальные сети.
[url=https://trip75c.cc]трипскан [/url]
Для вашей безопасности и защиты персональных данных настоятельно рекомендуется использовать только *трипскан официальный сайт*. Это гарантирует стабильную работу сервиса и сохранность вашей информации.
Если основной адрес ресурса временно недоступен, вы всегда можете воспользоваться tripscan зеркало для беспроблемного входа.
https://trip75c.cc
trip scan
I believe what you said made a lot of sense. But, think about this, what if you
were to write a awesome post title? I am not
suggesting your content isn’t good, but what if you added a headline that grabbed folk’s attention? I mean Windows进程CPU、内存等资源限制 – Nothing Is Secret is a little boring.
You could look at Yahoo’s home page and note how they
create post titles to grab people interested. You might add a related video or a related pic or
two to grab readers excited about what you’ve got to say.
Just my opinion, it might make your posts a little livelier.
veilige Ios Wedden Trucs Gratis 2026
Working at a desk all day gave me terrible posture and back pain. Kent Car Accident Chiropractic helped me correct it. Chiropractor Kent WA
Quick and reputable help from locksmith whilst my key snapped inside the lock. Highly counsel.
Helpful article on roof inspections before selling. For pre-sale inspections in Montgomery, visit roofing contractor Montgomery IN .
TripScan — персонализированные туристические маршруты и поездки
Путешествие — это всегда маленькая жизнь, наполненная эмоциями и открытиями. Но как сделать так, чтобы эта жизнь прошла идеально, без досадных накладок и разочарований? Ответ кроется в персонализации. Стандартные туры редко учитывают все ваши желания, а самостоятельное планирование отнимает массу времени. TripScan (или трипскан) — это сервис, который меняет правила игры, предлагая индивидуальный подход к каждому приключению.
[url=https://tripscan106.cc]трипскан сайт[/url]
¦ Что такое TripScan?
TripScan — это ваш персональный конструктор путешествий. Это не просто агрегатор билетов или отелей, а интеллектуальная платформа для подбора и мониторинга поездок. Сервис создан для тех, кто ценит своё время и хочет получить максимум впечатлений от отдыха, будь то уикенд в соседнем городе или большое путешествие на другой конец света.
[url=https://tripscan106.cc]трипскан официальный сайт[/url]
Создайте маршрут, который подходит именно вам
Главная философия трипскан — уникальность каждого путешествия. Забудьте о шаблонных программах. С помощью сервиса вы можете:
[url=https://tripscan106.cc]трипскан[/url]
* Сформировать идею. Укажите свои интересы: история, гастрономия, природа, экстремальный спорт. Алгоритмы TripScan предложат направления и достопримечательности, которые точно придутся вам по душе.
* Построить график. Сервис поможет грамотно распределить время, чтобы вы успели увидеть всё самое интересное, но при этом не устали от гонки.
[url=https://tripscan106.cc]trip scan[/url]
* Добавить детали. Подберите отели, рестораны, экскурсии и даже аренду автомобиля, ориентируясь на ваши предпочтения и бюджет.
Ваше приключение становится по-настоящему вашим.
[url=https://tripscan106.cc]tripscan вход[/url]
Полный мониторинг путешествия
Когда маршрут составлен, наступает этап реализации. Здесь на помощь приходит мощная система мониторинга. Трипскан становится вашим личным секретарём в поездке:
1. Автоматический сбор данных. Сервис может собирать информацию о ваших бронированиях (авиабилеты, отели), избавляя от необходимости хранить десятки писем с подтверждениями.
2. Единое окно. Вся информация о поездке — в одном месте. Вы всегда видите актуальный статус ваших планов.
3. Умные напоминания. TripScan заранее предупредит о времени выезда в аэропорт, начале регистрации или необходимости подтвердить бронь. Вы ничего не упустите.
https://tripscan106.cc
трипскан вход
Perfect timing. My neighbors recommended checking metal roofing near me for quick storm repairs. residential metal roofing Los Angeles
This was beautifully organized. Discover more at denver divorce mediators .
Первым этапом лечения является медицинская детоксикация, которая направлена на удаление токсинов из организма и стабилизацию физического состояния пациента. Мы используем современные методики, которые помогают минимизировать симптомы абстиненции, такие как головная боль, тошнота и слабость, обеспечивая комфортное пребывание в клинике.
Подробнее тут – [url=https://kapelnica-ot-zapoya-irkutsk2.ru/]www.domen.ru[/url]
Эта публикация содержит ценные советы и рекомендации по избавлению от зависимости. Мы обсуждаем различные стратегии, которые могут помочь в процессе выздоровления и важность обращения за помощью. Читатели смогут использовать полученные знания для улучшения своего состояния.
Получить полную информацию – [url=https://www.smolmed.ru/kapelnica-ot-zapoya-chto-eto-i-dlya-chego-nuzhno/]Похмельная служба Новороссийск[/url]
В этой заметке мы представляем шаги, которые помогут в процессе преодоления зависимостей. Рассматриваются стратегии поддержки и чек-листы для тех, кто хочет сделать первый шаг к выздоровлению. Наша цель — вдохновить читателей на положительные изменения и поддержать их в трудных моментах.
А что дальше? – [url=http://getmedic.ru/lechenie/alkogolizm/102590-narkolog-na-dom-obektivno-neobkhodimaya-usluga]стоп алко[/url]
Panel working clearance is often ignored; code-friendly layout at trusted electrician in Houston .
http://brmarketingagency.com/
Brmarketingagency se presenta como una empresa profesional orientada al mercado espanol, que proporciona servicios de calidad a quienes buscan resultados, valorando en la confianza y la transparencia. Mas informacion en el sitio oficial.
live wedden sport 2026
Also visit my web blog – basketball-wetten.com
I believe having a backyard deck is important for amusing guests! It develops the ideal environment for barbecues and events deck builders
I respect how they steadiness state-of-the-art language with contextual cues. Explore this steadiness at henson architecture .
Just got my home inspected by an electrician in Phoenix AZ; they found a few issues I didn’t know about! emergency electrician near me
These small-space tips are great. commercial junk removal cleared my hallway clutter.
Me gustó este post; para urgencias de cerrajeros baratos Barcelona uso cerrajero 24 horas .
Useful advice! For more, visit Roofing contractors .
The competitors entering the spotlight at LFA 234 know exactly what an emphatic victory signifies: a ring from Dana White, a UFC contract, and a life entirely transformed.
Very helpful. Garage Door Repair Mesa AZ swapped my worn rollers with nylon ones—super quiet now. new garage door installation
I was nervous about protecting hardwood floors in our Brentwood home— brentwood tn master movers had floor-runner and padding tips that saved us.
They respect your time and run their clinic like pros — no long waits, just quality care. Truck accident chiropractor
Thanks for the clear breakdown. Find more at encontrar abogado laboral .
If you need a honest 24 Hour Locksmith in Orlando, FL, call locksmith for quick emergency carrier.
Great job by ### anykeyword ### fixing my broken oven—now it’s as good as new!! https://www.google.com/maps?cid=6678422040132912182
В данной статье мы акцентируем внимание на важности поддержки в процессе выздоровления. Мы обсудим, как друзья, семья и профессионалы могут помочь тем, кто сталкивается с зависимостями. Читатели получат практические советы, как поддерживать близких на пути к новой жизни.
Слушай внимательно — тут важно – [url=https://www.familyland.ru/statii/6/lechenie-alkogolizma-u-zhenshchin-i-profilaktika]Похмельная служба Москва[/url]
Noticed soot around the burner— residential furnace Charlotte addressed it and checked for safe operation.
Этот информационный материал подробно освещает проблему наркозависимости, ее причины и последствия. Мы предлагаем информацию о методах лечения, профилактики и поддерживающих программах. Цель статьи — повысить осведомленность и продвигать идеи о необходимости борьбы с зависимостями.
Только для своих – [url=https://www.smolmed.ru/v-kakix-sluchayax-kodirovat-alkogolika/]стоп алко новосибирск[/url]
The bit about asphalt temps was interesting. Scheduled early morning drop with roll off rental .
Material collection facts that stay clear of regrets are on aspect. Check Phoenix master bathroom remodeling
I appreciated this post. Check out divorce mediation for more.
В этой статье рассматриваются различные аспекты избавления от зависимости, включая физические и психологические методы. Мы обсудим поддержку, мотивацию и стратегии, которые помогут в процессе выздоровления. Читатели узнают, как преодолеть трудности и двигаться к новой жизни без зависимости.
Изучить рекомендации специалистов – [url=https://4dekor.ru/kapelnitsy-ot-zapoya-na-domu-effektivnoe-i-bezopasnoe-reshenie.html]Похмельная служба в Люберцах[/url]
http://cenitbuscamedia.es/
Cenitbuscamedia es una consultora con experiencia enfocada en el ambito nacional espanol, que ofrece soluciones personalizadas a quienes valoran la eficiencia, valorando en la excelencia del servicio. Mas informacion a traves del enlace.
As a recreational athlete, I’ve turned to Kent Car Accident Chiropractic for help with sprains and muscle tightness. They’ve kept me in the game pain-free. Local Chiropractor
Artículo claro y bien explicado. Si necesitas un cerrajero cerca de mi, revisa cerrajero 24 horas .
A enfermeira do plantão noturno chamou o Wild Bandito de “o único honesto” — meio brincando, meio não.
I absolutely love the idea of having a backyard deck! It’s such an excellent way to extend your living space outdoors. I just recently discovered some incredible design ideas that actually motivated me deck builders
Thanks for sharing these steps. For local LA expertise, I recommend rodent control Los Angeles .
Love the step-by-step approach. Garage Door Repair Tucson recalibrated my smart opener and app. garage door opener repair
Медицинская публикация представляет собой свод актуальных исследований, экспертных мнений и новейших достижений в сфере здравоохранения. Здесь вы найдете информацию о новых методах лечения, прорывных технологиях и их практическом применении. Мы стремимся сделать актуальные медицинские исследования доступными и понятными для широкой аудитории.
Где почитать поподробнее? – [url=https://medport.info/raznoe/vyvod-iz-zapoya-metody-i-etapy.html]стоп алко[/url]
The team at emergency plumbing Sandpoint Idaho really knows their stuff when it comes to plumbing!