We’ve noticed problems with mouse cursor tracking, on Thunderbolt Macs attached to displays.
In the middle of moving the cursor with mouse or trackpad, the cursor jumps or skips making it difficult to control.
We tracked down the problem to background runs of system_profiler. Specifically, when system_profiler queries the display for information.
Running system_profiler without flags or with the SPDisplaysDataType data type triggers the problem.
To reproduce the problem at its worst, run the following in Terminal on a Thunderbolt Mac attached to a display and attempt to use the tracking device:
while [ 1 ]; do system_profiler SPDisplaysDataType; done
Apple is aware of the issue, but has stated that this is expected behavior.
Many tools that rely on system_profiler trigger the issue including JAMF Casper Suite, Puppet, and Apple Remote Desktop. These and other tools routinely inventory the Mac using system_profiler.
There is currently no workaround for getting display information such as Display serial number. And the only way to avoid the trigger is to run system profiler with each data type excluding SPDisplaysDataType.
If you think Apple should address the issue, please let them know.
It is pretty cool how Apple System Profiler has a command line equivalent (system_profiler). And it is pretty cool how system_profiler has a -xml option to allow for easier parsing. You might use this info for extracting asset information into a database or for puppet facter facts.
However if you’ve ever looked at that xml, you know that it is a tree full of unpredictable semi-structured data that was designed specifically for the GUI app. So even though you can parse it with your favorite plist parser, there is still a lot more work to do to get to the data you care about.
The tree structure is nice for a browsing through on a single machine, but not so good for reporting across many machines.
Apple stores most of the same data as key value pairs in its database for ARD reporting, but they do a lot of massaging of the data to get it that way.
It is possible to get at this data in an ARD database if you have an ARD collection server, but an ARD collection server isn’t for everyone and doesn’t serve every use case.
You can still get at the nicely formatted ARD information. ARD client includes a tool that outputs most, if not all of the asset information you care about in a much nicer structured format for reporting.
The tool is called sysinfocachegen and you use it like this:
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Support/sysinfocachegen -p /tmp/com.yourorganization.systeminfo.plist
Just use your favorite language’s plist parser to read the plist.