I realized the other day that on OS X, the Spotlight indexing process is started using launchd. This makes it very easy to modify the launchd configuration script to insure that background indexing uses the least amount of CPU and I/O bandwidth possible.

Edit the configuration script by running this command as root:

# open /System/Library/LaunchDaemons/com.apple.metadata.mds.plist

You should find yourself in the Property List Editor application. Now add two keys at the top-level, one named LowPriorityIO, which is a boolean set to true, and another named Nice which should be an integer set to 20.

Now whenever the mds spawns mdworker processes to index recent changes to the file system, it won’t get in your way quite as much as before. (Without this change, mdworker processes run at the same priority as user processes, according to output from the ps axl command).

 

8 Responses to Run the Spotlight indexer at a lower priority

  1. nuthatch says:

    Nice tip. But how *exactly* do you suggest running this command as root? su open … ? sudo, then … ? The pretty Property List Editor would not let me save the file, so I dropped into vi (shudder). That worked.

  2. John Wiegley says:

    I think you can say: sudo open /…/Property List Editor.app

  3. andrew says:

    You can put sudo in front of John’s command. To let you save from the Property List Editor just “sudo chmod o+w com.apple.metadata.mds.plist” beforehand. Don’t forget to give yourself write access on the directory, too, and remove the write access from both when you’re done. You’ll also need to change the file ownership back to root, as the save will make it yours.

  4. ray says:

    this is what i use:

    sudo defaults write /System/Library/LaunchDaemons/com.apple.metadata.mds LowPriorityIO -bool true
    sudo defaults write /System/Library/LaunchDaemons/com.apple.metadata.mds Nice -int 20
    sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.metadata.mds.plist

  5. sbr287 says:

    I tried those commands and the response was:

    SB-iMac(~) % sudo defaults write /System/Library/LaunchDaemons/ com.apple.metadata.mds LowPriorityIO -bool true
    Password:
    2008-11-12 13:20:36.332 defaults[3149:c0b] Unexpected argument -bool; leaving defaults unchanged.
    SB-iMac(~) % sudo defaults write /System/Library/LaunchDaemons/ com.apple.metadata.mds Nice -int 20
    2008-11-12 13:20:50.663 defaults[3160:a0b] Unexpected argument -int; leaving defaults unchanged.
    SB-iMac(~) %

    any suggestions?

  6. i did:

    sudo su

    and then

    open /System/Library/LaunchDaemons/com.apple.metadata.mds.plist

    this worked for me

  7. Vinz says:

    I used the normal

    open /System/Library/LaunchDaemons/com.apple.metadata.mds.plist

    In “Property List Editor” I got the rights-error, so I “Saved as” it to my Home.

    And then easyli moved it where it should be:

    sudo mv ~/com.apple.metadata.mds.plist /System/Library/LaunchDaemons/

    sudo chown root:wheel /System/Library/LaunchDaemons/com.apple.metadata.mds.plist

    To check it, i used the first command again.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Notify me of followup comments via e-mail. You can also subscribe without commenting.

Set your Twitter account name in your settings to use the TwitterBar Section.