Optimizing Blue Iris's CPU Usage

  • Views Views: 307,965
  • Last updated Last updated:
  • Introduction


    Blue Iris uses a lot of CPU time. In most Blue Iris installations, your CPU is the limiting factor which determines how many cameras you can have. As such, it is extremely important to optimize your configuration to ensure you can get the most out of your system while consuming the least amount of electricity.

    Blue Iris is highly configurable and it is easy to get lost in all the options. The most important sections in this guide are at the top and have been marked with a blue Essential badge.

    Try to keep your system under 50% CPU load to leave headroom for usage spikes and to keep everything running smoothly.

    Direct-to-disc recording

    Essential.png


    The Direct-to-disc feature allows Blue Iris to record video directly to the hard drive without re-encoding it. Re-encoding video is extremely CPU-intensive, often wastes disk space, and should be avoided at all costs. Direct-to-disc recording is perhaps the most important optimization you can make.

    This setting is configured individually for each camera in Blue Iris and as of Blue Iris 5 this setting is now profile-specific so if you set it for only one profile, it won't be set for any of the other profiles.

    Right click a camera and choose "Camera properties...". On the Record tab, click "Video file format and compression...". Choose the Direct-to-disc option.

    Record-Video-file-format.png Direct-to-disk.png

    When you use Direct-to-disc, it is strongly-recommended to also have the camera embed its own timestamp into the video stream (otherwise the timestamp will not appear in a recording until you export it).


    Sub Streams

    Essential.png


    Blue Iris 5.2.7 introduced support for sub streams. It allows Blue Iris to decode a sub stream instead of the main stream in most situations, yielding massive performance gains especially with high resolution cameras.

    See the Sub Stream Guide for full details on how to configure sub streams.


    Camera frame rates - 15 FPS

    Essential.png


    Most cameras have a default frame rate around 25 or 30 FPS. In most situations, this is a lot more than you need. Each frame requires CPU time to process, so the lower the frame rates, the better.

    This setting is configured individually for each camera in the camera's web interface. For best efficiency, it is recommended to use frame rates of 15 FPS or lower, as beyond about 15 FPS there is little meaningful improvement in video smoothness compared to the additional processing costs.

    Also set Blue Iris's "Max. rate" option in camera properties on the Video tab to your camera's actual streaming frame rate, or just barely above. This max rate setting is supposed to auto-adjust itself upward as necessary, but higher values of this setting directly impact your server's memory usage in a huge way, so don't let it be much higher than the camera's true frame rate.

    Note: If you use sub streams, your CPU usage will likely be low enough that you can ignore this section and run whatever frame rates you want.


    Other Optimizations



    In case you need to reduce Blue Iris's CPU usage further, there are some other things you can do.

    Run as a service

    When Blue Iris is configured to run as a Windows service, Blue Iris will start automatically with the PC, remain running when the graphical user interface (GUI) is closed, and automatically recover from most crashes. While the GUI is closed, CPU usage is reduced.

    service.png

    Live preview frame rate

    Blue Iris can take quite a lot of CPU time to draw live video to the screen through the local GUI, particularly if you have a high resolution monitor. There is an option to limit this frame rate, and therefore reduce CPU usage while the GUI is open. Open Blue Iris Settings, then on the Cameras tab, enable the "Limit live preview rate" setting and assign a fairly low number for the rate limit. This does not affect recordings, so consider even setting the limit to 1 FPS.

    Live preview FPS.png

    Video scaling

    Blue Iris has 3 video scaling modes: "Fast", "Bilinear", and "Bicubic". "Fast" uses the least amount of CPU, and is strongly recommended unless you cannot tolerate the jagged artifacts it creates in live streams in the Blue Iris local console. This setting becomes especially important if you have a large system, where the CPU usage difference can be dramatic.

    This option is found in Blue Iris Settings on the Other tab.

    scaling.png

    Text and Graphic Overlays

    By default, Blue Iris overlays a timestamp on each camera. Assuming you have the camera embedding its own timestamp, you can save a small amount of CPU time by disabling Blue Iris's timestamp. This option is on the Video tab of camera properties.

    text-overlay.png

    Encoder preset

    When CPU usage is elevated due to a lot of remote viewing using H.264 video, it can help to change the encoder preset.

    Go to Blue Iris Settings, Web server tab, and in the Advanced section you can Configure the encoder profiles which are used for H.264 encoding. The 3 preset choices exposed by Blue Iris, from fastest to slowest, are "ultrafast", "superfast", and "veryfast". "ultrafast" uses the least amount of CPU but produces the lowest video quality. "superfast" is an excellent middle-ground. "veryfast" uses the most CPU and produces the best video quality, but adds some video delay when accessing Blue Iris remotely.

    h264encoder.png

    Limit decoding unless required

    upload_2017-10-23_11-53-55.png

    This is a complex feature with many effects, and is not recommended for everyone. Be aware of the side-effects and limitations!

    From the Blue Iris help file:
    The option to Limit decoding unless required is another way to manage CPU resources. When enabled, only key frames are normally decoded and displayed. A key frame is a “complete” frame—all other frames rely on key frames in order to be rendered, as they contain only the “changes” from frame to frame. When you select the camera in the main window UI, or if someone is viewing the camera (or one of its groups) via a client app, then all frames will once again be decoded for display.

    When using this feature, it is advisable to adjust your camera's i-frame interval to be equal to the frame rate so that you get more key frames in your streams.

    * Note: i-frame is another word for keyframe. GOP ("group of pictures") is also synonymous with "i-frame interval".

    Many users turn this feature on for all their cameras without understanding it, but love the drastic CPU usage savings it provides. Later, they discover that their server's CPU usage hits 100% when they connect to Blue Iris through the web interface or a client app. This happens because remote camera viewing temporarily disables the "limit decoding" feature, and viewing the "All cameras" group disables it for all cameras at the same time! You can prevent this on a per-group basis by unchecking the box "Require/decode all camera frames when streaming" in Blue Iris's group settings panel:

    Blue Iris 4: GroupSettingsPanel-2018-05-31.png

    Blue Iris 5: 2019-05-31 Group Properties.jpg

    Similarly, you must be very careful about using the timeline to play multiple clips at the same time, because decoding of the clips will be quite resource-intensive.

    Windows Power Options

    Some users have reported that they get much lower CPU usage at the cost of higher power consumption after changing certain settings in Windows's power options. For most systems, this is not a recommended change. By default, Windows's power options allow it to reduce the CPU's clock speed to save power when the load is light. This can cause confusion because CPU usage appears higher when the clock speed is reduced. Usually this comes with no actual performance loss because Windows will increase the CPU speed when the load demands it.

    Antivirus / Antimalware exception

    In Windows Defender or any other security software you run, make an exception for your Blue Iris program files folder and database folder as well as the folders which you record video to.

    Disk Defragmenter

    Turn off the disk defragmenter (This PC > right-click hard drive > Properties > Tools > Optimize). File fragmentation is mostly irrelevant for surveillance video, so you should turn off drive optimization for any mechanical hard drives which you have Blue Iris write video to.

    Hardware accelerated decoding

    Hardware acceleration is not recommended anymore because it can cause stability issues. Use sub streams instead, and keep hardware accelerated decoding turned off in Blue Iris.

    If your CPU supports Intel® Quick Sync Video, then you can use hardware acceleration in Blue Iris to reduce CPU and energy usage with any camera streaming H.264. If your Intel CPU is 6th-generation (such as i5-6500) or newer, then you can use hardware acceleration for H.265 streams as well since around mid-April 2020 (beginning Blue Iris 5.2.5 or so). However beware that hardware acceleration can cause a number of problems such as ghosting in the video or reduced stability of Blue Iris. Relatively recently, some people have found that Intel hardware acceleration actually increases their CPU usage and causes performance problems. If you decide to turn on hardware acceleration, measure CPU usage before and after to judge if it is worth using.

    Open Blue Iris Settings, then on the Cameras tab, find Hardware accelerated decode (restart). If running Blue Iris newer than 5.2.5, you may choose "Intel®+VideoPostProc". Otherwise, "Intel®" will probably perform better. Restart Blue Iris for this change to take effect. If you are running Blue Iris as a service, you will need to restart the service, or just restart the entire computer.

    HWVA.png

    Recent Nvidia® graphics cards can also provide hardware acceleration with the Nvidia® NVDEC option, but this should be used only as a last resort because it is less energy-efficient than plain software decoding.

    You may also override the global hardware decoding option for individual cameras on the Video tab of Camera Properties. A full app restart is not required when you change individual cameras.

    On Windows 10 Version 1709+, you can easily verify that hardware acceleration is working. Just look in Task Manager on the Processes tab, and you should see a GPU column with a non-zero % load, and the GPU Engine column should read "GPU X - Video Decode". In Windows 10 Version 1803+, the Performance tab also provides graphs.

    On Windows 7, hardware acceleration does not work if you run Blue Iris in service mode.

    Hardware acceleration may make Blue Iris less stable (more likely to crash) on some systems.

    Sometimes a temporary video decoding error causes Blue Iris to disable hardware accelerated decoding for a camera. The user is not informed when this happens. Hardware decoding will remain disabled for that camera until you manually re-enable it in Camera Properties > Video tab.

    Notes about Intel®


    Intel hardware acceleration provides substantial savings in both CPU time and power consumption, and is highly recommended if Quick Sync Video is supported by your hardware.

    Check Task Manager > Performance tab. If the Intel graphics device shows usage on the Video Decode graph, then it is working, at least for some cameras. If the Intel graphics device does not appear, you may need to enable the Intel GPU in your BIOS.

    Notes about Nvidia® NVDEC


    Supported in Blue Iris 4.7.8+ (August 28, 2018)

    Nvidia® NVDEC hardware acceleration reduces CPU usage similar to Intel® Quick Sync Video, and is available if you have an Nvidia GPU capable of NVDEC (see Video Encode and Decode GPU Support Matrix). Newer and faster GPUs can handle more video than older or slower GPUs.

    WARNING: Nvidia hardware acceleration is actually very inefficient, resulting in much higher power consumption (increases long-term cost and heat output) and higher memory usage. Considering the relatively high purchase price and ongoing expense of using Nvidia hardware, it is a poor choice for most Blue Iris systems.