BES – Battle Encoder Shirasé
for Win XP/7/10/etc.
Ver. 1.7.9 (stable) & 1.8.0-test31: February 17, 2024

Free/Libre (Open-Source) Software that controls per-process CPU usage, released under the GNU General Public License.
Portable (installation not needed). [français, 日本語]

Version 1.7.9 (stable) – October 29, 2022
Version 1.8.0.31 (test) – February 17, 2024

BES is a small tool that throttles the CPU usage of the process you “target”: for instance, you can limit the CPU usage of a process which would use CPU 100%, down to 50% (or any percentage you’d like). With this, you can use other programs comfortably while doing something CPU-intensive in the background. For more than 10 years, BES has also helped various gamers as a handy “anti-freeze” agent, though that was not the original purpose of BES. Well-known examples quick-fixed by BES include The Witcher 3 + dual-core (2015); Steel Panthers: World at War; Kingdom Come: Deliverance; and Red Dead Redemption 2 on PC + 4-core (2019).

Download

Current versionVer. 1.7.9 (October 29, 2022) Stable
— SSE2 required (CPU from year 2000 or newer)
MD5 of zip = B294749DA393B110EADF907FA215ADF2
SHA256 of zip = 9FA2A852328872DAA769E6D738C43E07B4B4348C1CA2E15E7AFF84EAFD5B1C33
MD5 of BES.exe = E9BF1EEFEE1BA9894046B42E2032D0DC
[Changes from 1.7.8] “pid:” is no more case-sensitive (fixed, thanks to Zijian).

Previous versionVer. 1.7.8 (January 23, 2021) Stable
— SSE2 required (CPU from year 2000 or newer)
MD5 of zip = EBB26141A47F0D8D91763B9CC7DDDCD1
SHA256 of zip = 7DC8353FD13619933E0DD967BA06A215DCEE2ED6579C40073241ED62C399EF10
MD5 of BES.exe = 29E8A3F26D102EB5C37DD7598F3E3BBF
[Changes from 1.7.7] fixed minor memory leak (thanks to Eric).
Affected versions: 1.7.0–1.7.7 and 1.8.0–1.8.0.23. [Version 1.6.x and before, 1.7.8+, 1.8.0.24+ are not affected.]

A few anti-virus tools may think BES is suspicious: see FAQ.

Test versions: v1.8.0.31 (Feb 17, 2024): [NEW] German interface (Thanks to Thorsten). [MOD] Get rid of unused, old files (SSTP-related) from source code folder (no binary changes; they were not used anyway). — v1.8.0.29 (Feb 27, 2023): [MOD] MAX_SLOTS 400 to 1000 (Requested by Maksim). — v1.8.0.28 (Jan 25, 2023): [NEW] Snap: also enumerates loaded DLLs for each process. — v1.8.0.27 (Oct 28, 2022): [FIX] “pid:” was case-sensitive, though the document says “PID:”. Reported by Zijian. — v1.8.0.26 (Nov 13, 2021): Watch up to 32 targets, instead of 6. — 1.8.0.25 (July 6, 2021). [FIX] BES didn’t remember settings for some targets; a regression in test13 – test24. [NEW] Options | No Limiting if Foreground: If enabled, a limited target will be auto-unlimited temporarily while its window is foreground. Implemented by Caio’s suggestion. — [NEW] Russian i/f since Test21 (Thanks to IzoFox).

How to use it

Basically, just unzip the zip wherever you like and run bes.exe. You don’t need to install it.

Note: If you just run BES and it works for you, that’s fine. But you may have to run bes.exe as admin (right click > “Run as Administrator”), especially when you need to limit a process running as admin (otherwise, such a process won’t show up in the “Target” list). I know this may sound scary — it’s not a good idea to run a random exe as admin. The thing is, BES needs some privileges to do its job, i.e. suspending and resuming threads that don’t belong to its own process. If its right is too limited, it can’t even see exactly what other processes are running on your computer.

When you don’t need it anymore, just delete the whole folder that you unzipped, and everything will be okay.

For more info: do some web search to see what others are saying about BES. There are (unofficial) guides on the Internet, written in various languages by users. BES itself supports a few languages, e.g. French, Japanese, Finnish, Chinese.

NOTE: This page (the official site of BES) has existed for about 15 years, originally having a tutorial with a lot of images. However, due to the RDR2 mess in Novermber 2019, too many RDR2 players are coming here now, trying to get BES, which could cause a server down and/or too much transfer. Because of this, I have made this page plain and text-only (for the time being) to save server load and bandwidth. Previous versions of this page are on web.archive.org.

As of July 12, 2023, https://mion.yosei.fi/BES/ (Finland) and http://mion.faireal.net/Bes/ (US) are (almost, if not completely) identical, mirror sites on different servers. Use whichever you like.

FAQ: General

Q: Is BES free?
A: Yes. Free as in free beer (no charges), free as in freedom (open-source, GPL), and free of annoyance (no ads/no malware/no nag screens/no DRM/no phoning-home). It’s just a simple, small tool written many years ago for myself.
Q: Why can’t I see my target processes in the list?
A: Typically because you don’t run BES as admin.
Q: Can I play my video more smoothly (without stuttering) while I limit it with BES?
A: Maybe, maybe not. (1) Don’t limit too much (e.g. −90%), instead limit lightly (e.g. −5%). (2) If you have to limit more (e.g. −50%), then after you start limiting, click [Control] in the main window and use a small value in Target Sleep/Awake Cycle. Maybe try 40, or even 30, 20, or 10.
Q: Who uses BES, and why?
A1: BES can help a video encoder when their CPU may be overheating (it is a software CPU cooler). Sometimes you may want your fans to be less noisy, even if encoding takes longer (e.g. when you encode something while sleeping in the same room).
A2: BES is also used by some gamers as a quick-fix, e.g. when the CPU load is too high. This is just a workaround, not a real fix, but sometimes an otherwise unplayable game becomes magically (?) playable with BES. Generally the [Limit this] button of BES is helpful. The freeze-after-intro bug of Call of Duty WWII is a rare example, where the [Unfreeze] button of BES was used to fix the frozen screen.
Q: Is BES a good solution?
A: Sometimes yes, but there are often better solutions than using this tool. As for CPU overheating, the obvious solutions would be: (1) get rid of dust in your computer (e.g. by using canned air); (2) get a better cooling system.
Q: I’m getting an error like “Permission denied” “Access denied” “SuspendThread error”?
A1: This problem may be very hard (sometimes impossible) to solve. First, make sure you run BES as admin (You can also log on as Administrator, not just running BES as Admin, to see if it helps). Second, some say it will help if you start BES before you start your target.
A2: According to one user, increasing the paging file size (by e.g. 2000 MB) may solve the problem. First you may want to check the currently allocated size, etc. in the Virtual Memory dialogbox of your OS. If you suspect that your paging file size may be too small, you could increase it to see if that helps. Note, however, if you change these settings randomly, your system may become unstable. So before you change anything, make sure you can revert the changes in case something goes wrong (take a screenshot of that dialogbox, and make a note of the current options). You can email me if you find a method to fix this problem; I’d like to share that info with other users having the same problem. Thanks!

FAQ: Safety

Q: Is BES safe to use?
A1: I could say yes, but that would be meaningless because I could lie. When you download anything, YOU should scan it with your anti-virus software. If you get BES from a random mirror site (other than the official page https://mion.yosei.fi/BES/), please check the MD5 value to make sure that your copy has not been modified.
A2: Another thing you may have to worry about: BES may be seen as a cheating tool (e.g. it can slow down a difficult shooter game) and you may face the consequences if you use BES. I can’t answer a question like [Is it safe to use BES in GTA5 or I get banned?]. Be prudent and draw your own conclusion. Especially, if you’re beta-testing, report the issue to the game devs when you experience abnormally high CPU usage. Just using BES as a quick-fix in such a situation is essentially hiding a bug, which defies the purpose of beta-testing.
Q: Why do a few (less-known) anti-virus engines sometimes see BES as suspicious (false-positive), while well-known engines are generally okay with BES?
A1: Possibly because they are financially desperate and unethically advertising themselves by claiming, “We’re different. We can detect a virus that no one else can. Buy our products now!”
A2: To be fair, BES does look suspicious because it messes with other processes — it slows down the other program you target, not letting it run normally, by force-suspending and resuming its threads periodically. This unusual behavior of BES may be seen as suspicious, if heuristic malware detection is over-sensitive.
Q: What should I do if my anti-virus software thinks BES is suspicious?
A1: If that happens, listen to it and don’t start bes.exe. As the author, I know BES is not a virus, but I have no way to prove that (unless you’re a programmer who can read C/C++). It would be unethical for me to say you can ignore such a warning, because then you might start thinking you can ignore your anti-virus software, which would be very dangerous, obviously. Besides, I can’t rule out the possibility that you somehow got a fake copy of bes.exe, maliciously modified. Thus, if your anti-virus software warns you, play it safe and listen to it.
A2: If you are a programmer and the same thing happens to you, the story is different: check the source code in the subfolder src in the zip (messy but the logic is simple and clear), and you will know that nothing bad is hidden there. Then, compile your own binary (you can also modify BES as you like — the beauty of open-source/GPL). This way you’re 100% sure what you have, and no one can scare you anymore. The truth will set you free (if you’re a programmer).

FAQ: Technical

Q: Can I use BES as a command line tool?
A: Yes. See Help - Commandline help (or hit [F2]). Using command line parameters, you can also start BES automatically when you start Windows, and let it target specific process(es) pre-emptively, without manually limiting them every time.
NOTE: You should quote your target(s), e.g.
bes.exe "C:\path\to\target.exe" 40 -m
bes.exe -J "C:\path\to\target1.exe" 10 "D:\blah blah\whatever\target2.exe" 20 -m
You can use a wildcard “*” too, e.g.
bes.exe "C:\some\folder\*.exe" 60 -m
Q: How can I start BES automatically with specific settings? I want BES to remember the settings.
A: If you want to limit the same target(s) again and again with the same settings, you can create a shortcut to bes.exe. Right-click on it, select Properties. Now edit the “Target” editbox. Originally it says something like
"X:\path\to\BES.exe"
Change that to, for example,
"X:\path\to\BES.exe" "C:\path\to\your-target.exe" 80 -m
and click Apply, OK. When you click this shortcut, BES will limit your-target.exe with −80%.
If you want BES to start automatically when you start Windows, then you can put this shortcut in your Startup folder. Or, you can do the same thing using Task Scheduler.
Q. Too many System Interrupts: solutions?
A. According to one user, Andrew, “when running BES it seems to require x2APIC enabled in the BIOS and OS to work effectively to handle the CPU interrupts efficiently, otherwise it bogs down the operating system.” (Added 2021-11-30)
Q. What is the commandline parameter “Initial Delay”?
A. The waiting time before BES starts limiting your target, when BES finds it. When you want to limit an already-running process, probably you want to limit it immediately. But when you want to watch a target (that is not running now) and limit it when it starts, sometimes the situation is different. Some applications are slow to start. For example, when you start a browser or a game, it may take several seconds before you can actually use it. So, sometimes you might think: “It’s okay that target.exe starts quickly. I just don’t want it to use too much CPU after it starts.” In such a case, you can tell BES, e.g. “Limit target.exe when you find it running. But wait for 3 seconds (=3000 ms) before you start limiting it, so that the target can start normally.” by typing, for example:
bes.exe "C:\your\target.exe" 10;40;3000
Doing this might be necessary when your target is VERY SLOW to start (say, taking 30 seconds), and you want to limit it by e.g. -99%, making it 100 times slower. Then your target may take up to 3000 seconds (about 1 hour) to start. What will happen, for example, if it needs some Internet connections to start? Timeout errors or other bad things may happen if initialization takes that long. In such a situation, you may want to limit it only after initialization is done normally: so the “Initial Delay” may be helpful. That said, such a situation is rare and you probably don’t need it :)

FAQ: Misc

Q: What does the name “Battle Encoder Shirasé” mean?
A: A parody of Battle Programmer Shirase (Wikipedia). A person who encodes movies is called “encoder.” For what it’s worth, Shirasé is pronounced like she-rah-say.
Q: Who created BES?
A: Me — someone from forum.doom9.org, who encodes things.
Q: Are there Linux/Mac versions of BES?
A1. No, but you can try another tool called CPUlimit instead. Unlike BES it’s a command line tool without GUI, but it should work fine (possibly even better than BES).
A2. Linux has a built-in feature called Control Groups (Cgroups), “making it possible to do things such as limiting the amount of CPU time and memory available to a cgroup” (a user-defined group of processes). For more info, man cgroups (7).

E-mail Address

If you have any trouble, or if you have any suggestions, bug reports, or comments, you can contact the author at the email address in this picture (optionally, using PGP/GPG: my public key*1). For anti-spam reasons, I may change my contact address any time and I may reply to you using a different mail address, but I will try to write you back anyway, unless it is from a Gmail account. When writing to me: (1) Do not use Gmail: there are privacy-oriented, free-of-charge alternatives (ProtonMail, Tuta, etc.), and you can get your new mail address instantly without providing any personal info such as your phone number (you can even sign up anonymously via Tor). To protect the privacy of you and everyone else, I may automatically delete any email from Gmail account without opening. (2) If you attach large file(s), e.g. a log file, please compress them as a ZIP, .7Z, etc.

Many people ask the same question again and again: “How can I start BES automatically with specific settings? I want BES to remember the settings.” Please read FAQ first, and if you have further questions, feel free to ask :)

*1 Fingerprint

Donation

BES is free software and you don’t need to pay for it at all. If you’d like to, though, you can send me a donation in Monero (XMR). Any amount, even 0.01 EUR, would be appreciated:

88RcUaAukr6QkGuiz3a6pA2ffjoTCZmt4T5mjW4Umd83QAt3jd1Er9U8zmhGGCTkyGEKNTyq98wb7THGQJZ9qDWt63oxq1t

If you’d like to use Paypal: you can visit https://cal.huc.edu/ and support the CAL project via Paypal. CAL is a project to make a huge online dictionary of the Aramaic language. Although hosted by Hebrew Union College, the project is not necessarily Jewish (one of the main dialects of Aramaic is mostly Christian). It’s not my project, and has nothing to do with BES, but it’s a great project any language lover may want to support.

Alternatively, instead of sending a donation to me or someone else, you can simply be a bit nicer to your friends/family members/etc. This may sound strange and/or corny, but I think basically it’s the same thing, because that way, in the big picture, you’re making the world where I live, a slightly better place. Equivalently, you could also try to be slightly more tolerant to your “enemies,” refraining from using a religion or non-religion as a weapon.