Quick diagnosing of slow file copy in OS X

When I wanted to transfer some large Aperture catalogs this weekend, I discovered that the file copy was progressing at an alarmingly slow rate.  56 GBs was going to take 8 hours!  A ballpark guess of the uptick on the file copy counter looked like I was getting 0.01 MB / s.

I fired up fs_usage in a terminal and looked all all the file accesses and quit each application / service one by one.  First off I stopped dropbox and killed its background service, next I stopped backblaze and its associated service, stopped Sophos Anti-Virus.  All this resulted in no changes in file copy speed.  Finally, I was left with a service that I hadn’t recalled installing “WDSmartWareDaemon” and the WD “StatusMenu”.  This was part of the software that came with my ultra-portable WesterDigital MyPassport hard drive.  WesternDigital tried to be helpful by providing backup software with its portable drive.  Killing WDSmartWareDaemon and its related processes saved the day.  My file transfer instantly sped up and would complete in 40 minutes instead of 8 hours.

Posted in Uncategorized | Tagged , , , , , , | Leave a comment

CustomSLR Amazing Customer Service

For the last year, my camera strap of choice was the CustomSLR Split Strap + C-Loop. This camera strap solution was ideal for me because it was more comfortable than the BlackRapid strap and safer for the body of my Canon 5D Mark II than BlackRapid. CustomSLR claims that the comfort of the CustomSLR Split Strap comes from being split into two padded straps that conform better to shape of my shoulder. In my experience, I found the Split Strap to provide more comfort simply because it has a much wider padded strap than the BlackRapid RS-7. CustomSLR Split Strap + C-Loop also seemed safer for my camera body. The BlackRapid RS-7 would frequently bounce against the metal carribeaner and lead to wear near the tripod connection to the camera body.

However, after less than one year, the Split Strap tore apart at the V split in the padded shoulder section. Also, the Glide Strap was getting frazzled to the point that the camera could no longer glide very smoothly up the strap. I’m sure that I am pretty tough on my gear, but I still expect my gear to last the abuse that I give it. A quick email to CustomSLR support and I was able to reach a human! Anne Bui of CustomSLR immediately replied saying that the split strap has been improved in the year to specifically address the tearing I witnessed and offered to replace my split strap if I payed for the shipping!


Here is my new strap next to my old strap. Sure enough, they have improved the Split Strap by stitching the strap’s split divider. What great customer support! I look forward to ordering another Glide Strap + C-Loop and rigging a dual strap solution for myself the next time I’m at a wedding. Aslo, I look forward to the M-mount solution for universal tripod usage as soon as they release it.

Posted in Photog | Tagged , , | Leave a comment

OS X D-Trace disk I/O tools iotop and iosnoop leak dynamic variables?

While attempting to track down slowdowns on my home OS X machine, I did some research about the many tools that can be used to trace disk I/O activity.  There is an amazing tool in the OS X kernel called D-Trace that enables disk I/O monitoring scripts like iotop and iosnoop.  Where this all falls apart is that it appears that iotop and iosnooop leak dynamic variables.  D-trace has a limited space for dynamic variables so eventually the output of iotop and iosnoop grinds to a halt.


iotop is a wonderful tool for showing all the processes that are actively reading or writing to disk.  To run, just call “sudo iotop 5”.  See the man page for all the configuration extras.

Example iotop output

The problem with iotop, iosnoop, etc in OS X 10.6.7

Run ‘sudo iotop 5’, or ‘sudo iosnoop -e’ for a few minutes and you’ll notice this warning appear and the useful results from iotop or iosnoop come to a halt.

dtrace: 880 dynamic variable drops
dtrace: 751 dynamic variable drops
dtrace: 891 dynamic variable drops
dtrace: 684 dynamic variable drops
dtrace: 799 dynamic variable drops

A temporary workaround

Add the following lines to iotop, or create a separate iotop.big like me if you are paranoid.  This increases the dynamic variable storage for the iotop script and increases the rate of some kind of garbage collection.  Using this, I can run iotop longer than the two minutes before the change—long enough for my needs.  You can do the same thing with iosnoop or any other D-Trace script on your OS X machine.

— /usr/bin/iotop    2009-05-29 00:16:49.000000000 -0700
+++ /usr/bin/iotop.big    2011-06-28 01:05:07.000000000 -0700
@@ -172,6 +172,9 @@
# — Main Program, DTrace —
/usr/sbin/dtrace -n ‘
+#pragma D option dynvarsize=16m
+#pragma D option cleanrate=5000hz
* Command line arguments

Links to relevant resources

DTraceToolkit in MacOS X
[dtrace-discuss] iotop and dynamic variable drops

D-Trace Options and Tunables

Posted in Techie | Tagged , , , , , | 1 Comment