Close

Testing Proceedure

A project log for Mac mini 2018 Hexa Core Cooling Analysis

Analyzing the stock cooling in a 2018 Mac mini

michael-obrienMichael O'Brien 12/24/2018 at 21:030 Comments

Testing State

The Mac mini is functionally stock. It has been manually updated to macOS 10.14.2, automatic updates are disabled. Most automatic features driven by the OS are disabled or hidden if they can be accessed via System Preferences. One HDMI cable is plugged into a 1920x1200 monitor, and both USB ports are occupied by HID devices. The Mac mini is configured with an i7-8700b, 8 GB of RAM, 2 TB SSD, and 10 Gigabit ethernet.

Room temperature was approximated at 71-72 ˚F, aka ~22 ˚C, with the surrounding surface temperature of 72-73 ˚F. HVAC was utilized to stabilize the environment, though no vent was within 16 feet of the setup, nor were said vents pointed at the setup.

Monitoring Process, Pre-Thermal Load

The computer is booted and brought up to temp with a temporary thermal load to speed up the time it takes to reach thermal equilibrium while idle. It is then rebooted, and the machine is placed into the following state: logged in at the desktop with 1 Finder window opened to said location, with both iStat Menus and Intel Power Gadget loaded. iStat Menus was set to refresh sensor data at its "Fast" update frequency. Intel Power Gadget remains at a 1000 ms display polling rate, but logging has been modified to a 10 ms polling rate.

After a 2-minute, post-boot idle is observed, Intel Power Gadget's logging function is enabled via the keyboard shortcut for the first 30 minute idle segment. Once the 30 minutes have elapsed, a script is opened to induce a consistent, repeatable thermal load on the cooling setup for a 60 minute time frame. After this, the load is automatically terminated and a final 30 minute idle time is observed to allow the system to get back to an idle thermal equilibrium. 

Additionally, at three points (5 minutes prior to engaging the thermal load, 5 minutes prior to its self-termination, and 5 minutes before the end of the cool down idle period occurs), 5 points on the Mac mini case will be measured with an Etekcity LASERGRIP 800. These are approximately 1" from the surface with the temperature gun pointed practically perpendicular to the case's top surface. These temperature points are 0.75-1" from each of the rounded corners and from the black plastic Apple logo.

Thermal Load

The thermal load is a simple script consisting of 13 instances of the following command:

yes > /dev/null &

 Followed by:

sleep 3600 && killall yes &

With SMT CPUs, it is not specifically necessary to create a 2 threaded load for each physical and virtual core pair. SMT adds 20-35% extra performance depending on workload. However, to ensure that a consistent and maximum work/thermal load is maintained, a total of 12 individually threaded loads will be needed. A floating 13th threaded load is added for the sake of increased repeatability, though may be purely academic in function. Can't hurt can it?

The same 5 points on the Mac mini case are measured for temperature 45 minutes after the start of the thermal load, then once more between 55 & 60 minutes. Logging will continue for 30 minutes after the thermal load ceases.

At a sample interval of 10 ms, a 2 hour log file contains ~720,000 log entries. These files are ~133 MiB large.

Data Processing

The data will be smoothed with a 25-point Savitzky–Golay filter, giving a result of a rolling 250 ms window. CPU frequency will be aliased to 1/6th of a multiplier due to the hexa core implementation of the CPU I have, the i7-8700B. Maxima and minima CPU die temperatures will be given from the filtered data, but aliased to 0.1 ˚C. This is a compromise between the increased resolution from super-sampling and the perceived significance of the resolution, which needs to be marginalized.

Discussions