
Dropbox will kill your insane MacBook Air 2013 battery - nicoschuele
http://blog.nicoschuele.com/?p=151
======
jwr
Dropbox is _terrible_ with CPU usage. This is something I reported to them
several times, but it seems they don't really care.

Last I tested, Dropbox consumed CPU for ANY changes ANYWHERE in your
filesystem, not just within the Dropbox folder. So its (slow) code processed
changes even when you untarred a large set of files somewhere in /tmp.

I also stopped using Dropbox for storing my code because of that — it's nearly
useless, as it consumes so much CPU and eats so much battery life, that it
simply isn't worth the effort.

Another problem with Dropbox is that upon login it indexes the entire Dropbox,
which if you have an HDD basically kills the machine for several minutes, e.g.
you can't do anything else. That happens to me on a Mac Pro. On an SSD-
equipped MacBook things are better, but it's still a monstrous operation.

And to everyone that says you should not store code in dropbox: a) there are
good and legitimate reasons for doing so, b) dropbox could work a little more
on optimizing CPU usage instead of adding "save your photos to Dropbox"
features.

~~~
davedx
> And to everyone that says you should not store code in dropbox: a) there are
> good and legitimate reasons for doing so

I'm genuinely curious: why do this, as opposed to using a DVCS like git?

~~~
jwr
I do use git. But I often develop on two machines: a laptop and a Mac Pro.
Which means I am often in the middle of something when I have to just pick up
the laptop and go. "In the middle of something" means that just pushing
commits over doesn't cut it. I can (and do) rsync stuff over, but that is
annoying and very error-prone (it's too easy to sync stuff the other way
around and lose work).

I guess you could say Dropbox gives me finer sync granularity than git does.

Dropbox seems like a perfect solution: have a single place where you keep
code, develop on two machines, just pick up your laptop and leave whenever you
want, without worrying about sync.

~~~
timtadh
I don't understand. You can easily cut a branch commit. Push the branch. Pull
the branch finish it. Commit. (optionally rebase). Delete the temporary
branch. Git handles this problem very well.

~~~
jwr
Right. I get a call, I need to leave for a meeting in 5 minutes. This is
exactly the time when I want to cut branch commits, push branches, pull
branches, commit and rebase. Even rsync is better than that.

Put it another way, I don't understand why you'd use Dropbox at all, after all
you could easily version all your files in git, using
push/pull/branch/commit/rebase to get your data to your different machines.
Git handles this problem very well, after all.

~~~
snowwrestler
The specific problem with git in Dropbox is that working in git can cause a
large number of transient files changes as you, for example, switch branches.
Dropbox doesn't know those are transient changes and attempts to sync all of
them. That is one reason it can drain battery so fast.

Obviously with regular files, that is not an issue, so Dropbox works well.
(unless you're managing them with git, I guess)

If you're willing to accept the "lightness" of git branching and commits, it's
possible to "save and sync" your work very quickly. Assuming you're on a dev
branch:

git add -A

git commit -m "temp commit 2013-7-3"

git push origin

You can even script this, see for example:

[http://stackoverflow.com/questions/8482843/git-commit-
bash-s...](http://stackoverflow.com/questions/8482843/git-commit-bash-script)

Then when you're ready to work on a different machine, you fetch from origin.

If you want to keep your commits meaningful on your dev branch, you can create
a temp branch first, then rebase later to get rid of the ugly temp commit.

git checkout -b temp123

------
cnvogel
That finding might be quite interesting and all... but I'm thoroughly confused
about that guy always quoting power consumption in mAh (which is the unit for
electrica charge).

I'd also check if that guy's dropbox daemon(s) are stuck in an obvious loop.
I'm logged on in my private server, and when it's idle there's hardly any
activity on the dropbox threads, the main CPU consumer is one servicing what I
suspect to be the main select() loop. And that thread basically stat()ing the
.dropbox/config.dbx file every 2 seconds, and reads 16 bytes out of it. That
should hardly be measureable in terms of power consumptions on a modern CPU.

~~~
nicoschuele
Thanks for pointing this out. It's a typo, I meant mA, not mAh. Fixed.

~~~
demallien
No, that is not a typo. Thos is a typo - an error created during the
mechanical act of typing. Yours was just a plain mistake, you got the units
wrong. Own it and learn from the error instead of excusing it away.

~~~
Uchikoma
I guess you might not be as good with words in Schwizerdütsch as he is in
English.

~~~
nicoschuele
Lol. Thanks. But I'm from the french-speaking part of the country.

~~~
Uchikoma
D*mn ;-)

------
omarrr
> I use it to store my code repository [...] Not using Dropbox is not an
> option for me as I switch machines several times during the day.

I'd suggest you invest in a hosted git repo.

~~~
nicoschuele
I store a lot more than just a git repo in Dropbox. I also use it to share
files, etc. But yes, I'm starting to look at alternatives. Maybe I'll develop
a small utility to push/pull/share files from my home NAS upon request rather
than having a continuous process running in the background.

~~~
tluyben2
You can also, what I did, switch dropbox off and switch it on only when you
are connected to power for a sync. It's not ideal, but it works. I don't see
how dropbox could do better though. If you do it manually to your NAS, you
basically do the same as switching dropbox on/off or dropbox in a cronjob.
Anything monitoring your file system and synching up with many small files
will incur load like this.

~~~
tommorris
I use ControlPlane -
[http://www.controlplaneapp.com/](http://www.controlplaneapp.com/) \- which
monitors your "context" (like location etc.) and lets you trigger events on
context change.

Just added some rules so that Dropbox quits when I'm in my "mobile" context,
but reopens when I am in my "home" or "office" contexts. Will see whether it
works on my commute later.

~~~
tluyben2
Nice! Thanks for that tip.

~~~
tommorris
And I'll note that after my commute home, I do seem to have a bit more battery
life than usual. So that's a win.

------
bherms
I had this happen in the past too and found it to be the result of two issues:

1) Using dropbox to house a very large git repo with massive changes and tons
of branches... Every time I switched branches, the hundreds of files would
change and obviously kick off a major sync job.

2) There were a few files in a folder than had the owner set to the wrong
owner and Dropbox couldn't get permission to access them. This caused it to
get stuck in a loop trying to sync those files and Dropbox ended up running my
CPU up to over 100% load.

Fix those issues and you shouldn't see it causing any more problems with your
battery life.

~~~
easytiger
> Using dropbox to house a very large git repo with massive changes and tons
> of branches... Every time I switched branches, the hundreds of files would
> change and obviously kick off a major sync job.

I really have to say honestly: no shit. Sorry if i sound crass but really?
When you use an arbitrary piece of software to automatically modify 100s of
files the piece of software designed to detect that exact event has do do work
and you are complaining? The mind boggles

~~~
simonh
Which part of that comment looked to you like a complaint?

------
maikhoepfel
The only takeaway is that his power usage shouldn't be that high with Dropbox
idling/paused. But given that he's * surprised at it using a lot of power when
doing the initial sync * decided to have a git repo inside Dropbox (just don't
do it, you will run into trouble; and it will cause heavy sync activity, thus
waking CPU and wifi) * using a unit of capacity to express power consumption

I'm not sure I trust his methods.

I regularly turn off Dropbox on and off when switching between mobile
broadband and wifi, and haven't seen any difference in power consumption.
That's on Ubuntu 13.04 @ Thinkpad T530.

~~~
threeseed
Dropbox behaves very differently on OSX versus Linux I've found.

~~~
throwaway2048
likely because linux has inotify

~~~
andor
Every modern operating system has inotify-like capabilities. Mac OS has an
integrated desktop search since 2005, which wouldn't be feasible without
filesystem events.

~~~
aidos
Dropbox has its own process though, doesn't it? dbfseventsd.

sudo fs_usage -w

I've been watching it recently and it seems to touch files that it shouldn't
need to. I need to do more investigation. I uninstalled backblaze recently
because I discovered that it manually scans the whole filesystem _all the
time_.

~~~
Osmium
Thanks for the Backblaze info! That's really good to know. Do you know if
CrashPlan is any saner? Resource usage was a big factor when deciding between
the two, and I want to know if I've made the right choice :)

~~~
aidos
I haven't used CrashPlan so I can't really say, sorry. I've moved to Arq now
which has been working very well for me but it's OSX only.

~~~
Osmium
Thanks for the reply -- I've looked at Arq before too. I find it interesting
Arq (S3) is a third the price of Tarsnap (S3).

Out of interest, if you don't mind me asking, how large is your backup, and do
you use S3 or Glacier backend?

~~~
aidos
Interesting question - I hadn't gotten around to checking the numbers yet
myself. So,

    
    
      Indexes are stored in S3, data is on Glacier
      ~450GB of data stored
      316,189 Requests to upload it all (main cost)
      $17.39 to upload it all
      $5.09 to store it last month (but upload was incomplete)
      Expect closer to $6-$7 to store it this month
      ~$120 to restore it all (that was a back of the napkin figure before I started)
    

Arq has a number of good things to recommend it. The creator lurks around
here, which is always nice to know. The design is very sensible - it's
basically a git index on S3 with the data blobs in Glacier. The storage format
is open and documented. All the data is encrypted using your own key locally
and then pushed to your own AWS account. It works out really cheap if you use
Glacier (only planning on restoring in catastrophic circumstances).

It all just works. The interface is easy and intuitive. I pushed my data to
the EU region since it's closer. The more I think about it the happier I am
with my choice at the moment. Even if I changed my mind and stopped using it -
it's nice knowing that for a few dollars a month I have a huge snapshot of my
data in a reasonable format in my AWS account.

------
rasmuskl
One solution to the whole "storing source in dropbox" problem that I liked to
use previously (using bitbucket now instead) is just to have a bare git repo
in dropbox + the real checkout somewhere else and just push commits to the
bare dropbox repo whenever I'm about to switch machine. Could even be set up
to happen more automagically since the repo isn't shared.

Syncing binaries (I mainly work in C#) and lots of small changes seems silly
to me.

------
Osmium
I switched from Dropbox to SpiderOak recently, and they're a bit better, but
feels so clunky. I'm just about fed up with all of them. I use CrashPlan for
backups and they're at least good for CPU usage because they have a preference
-- max CPU (%) when you're at the computer, and max CPU when you're away,
which really does help.

Those who are using Dropbox may find something like cpulimit[1] useful. This
limits the CPU usage of any process by repeatedly sending SIGSTOP and SIGCONT
signals to your process. It's on homebrew for OS X. I think there're some
other alternatives available too but can't remember off hand. But if the
article's accurate, Dropbox has issues even when it's not indexing heavily.

[1]
[https://github.com/opsengine/cpulimit](https://github.com/opsengine/cpulimit)

~~~
rsanders
A non-open-source OS X app called AppTamer can be very handy for managing
battery life. You can set process priority and automatically pause non-
foreground GUI apps. So when you switch away from your CPU chewing IDE, it'll
get SIGSTOP'd.

------
waterhouse
_" I just have to change my habit of having it constantly on while working.
Turn Dropbox on and sync before starting to work and then turn it off."_

Hohoho. Allow me to suggest a solution. Suppose that you would be ok with
having Dropbox sync files every five minutes. Let's suppose that 10 seconds is
usually more than enough to do whatever syncing is necessary. Well, then:

    
    
      $ while :; do killall -STOP Dropbox; sleep 300; killall -CONT Dropbox; sleep 10; done
    

I do things like this to throttle the CPU usage and, in some cases, the power
consumption of applications that really don't need what they're using. This
really should be a feature provided by the operating system, but in the
meantime, I resort to ridiculous hacks of this sort. (Note that, if you ^C the
above loop, Dropbox will likely be still STOPped and you'll have to CONT it
again. It is possible to write a more sophisticated program to address this
problem.)

------
threeseed
This happens to me as well.

The Dropbox daemon wakes up every 10-15 seconds, uses 15% of the CPU then goes
back to sleep. All this without any files changed or the index being affected.
On 10.8, 10.9 with official versions and betas. Noticeable because I am on an
older C2D MacBook Pro.

Wondering whether it's a side effect of something else installed e.g. iStat
Menus.

------
nicholassmith
This is interesting, I've also got a 2013 MBA and use DropBox but I've not
seen a big dip in battery usage. I might do a bit more testing this week and
see whether it has had an impact and I've just not realised, and/or I've put
it down to the code-compile-simulator cycle.

------
tluyben2
I see this problem happening only to me when it's used as code repository.
Which is what he is doing. I had that for one project because the client
didn't want to use git, but it's horrible. So, logically, when you have a lot
of files changing all the time (compiling (xcode, eclipse), adding libraries
(node, RoR)) you'll see dropbox taking over your computer. For all other uses
it seems fine.

Note also that when you have the issue with a lot of small files, during/after
dropbox is done, Finder / mds will jump to the top of your top indexing the
files. I disabled mds in my projects directory and will never place active
source directories in dropbox again.

~~~
mtts
Well, yes, but if you read the result of his tests even with syncing turned
off Dropbox is _still_ eating about 500 mAh.

And that is, I would say, rather strange.

~~~
andor
I guess the Python interpreter is preventing the CPU from entering lower sleep
states.

------
watson
Can anyone confirm his findings? I imagine that if this is real, then this is
a problem for all MacBook owners not just the latest MacBook Air.

I have a 13" MacBook Air, medio 2011. I bought it almost right after it was
released and have used it as my only computer almost every day since. I have
the Dropbox agent running all the time.

While working last Sunday I got 5.5 hours of battery life out of it and I've
never taken good care of the battery. I never drain it unless I'm not near a
power outlet, in which case I just have it plugged in all day.

My current battery health information shows: Cycle Count: 253, Condition:
Normal

------
da_maire
I have a cron script running on my MacBook to make sure the Dropbox client
priority is always set to 20 (lowest). I also pause the client manually when
moving to battery power. I really wish there was a better solution, like
switching to a similar service that offers decent (or at least acceptable)
software, but almost everyone else uses the same setup with terrible
'universal' Java/Python/etc-based clients that absolutely suck at
synchronizing large amounts of data.

------
zurn
Laptop operating systems need to start keeping tabs on what's using your
battery, like Android does (with mixed success but that's another story).

~~~
9h1d9j809s
OS X 10.9 does show battery use per app in the Activity Monitor. It also shows
a short list of battery-draining apps right in the battery menu at the top of
the screen.

~~~
lttlrck
Powertop has been available on Linux for a looooong time.

~~~
zurn
Powertop doesn't do that though.

------
lcnmrn
Open Dropbox when you need to sync, then quit the process. Make sure it
doesn't run at OS X start up. I don't see why most of the users want to have a
perfect sync all day long since it doesn't happen in real time (large files,
slow network, etc.)

------
TheAnimus
Oh if only it was one App that killed the battery on the last laptop I bought.
Before nuking the default windows install, I did a quick test, with all the
crapware that comes as standard, it managed about 4 hours. Fresh install 6.5
hours.

~~~
nicoschuele
Mac. Doesn't come with crapware.

For Windows boxes, there's decrapifier.

~~~
FreezerburnV
Doesn't Windows 8 come with a built-in "remove everything and fresh install
the OS" button now? Can always use that.

------
OrdojanAndrius
Since I'm stuck using an old computer I made a small script that turns Dropbox
on every few hours and kills it after 10 minutes. I don't sync data all the
time so this solution works well for me and I save system resources.

------
Already__Taken
I push to a bare repo in a dropbox folder because I can't for the life of me
get a secure connection through the work firewalls / proxy so I don't bother
and let dropbox deal with it.

------
diziet
Doesn't seem to happen with the latest self-updated version of dropbox and
10.8.4 to such an extreme, on a retina MBP. I get 15 extra minutes.

------
lord_quas
Thats awful, one can only assume this affects MBP as well. I think I'll now
only turn DB on whenever I'm on A/C.

~~~
nicoschuele
Yeah, it sucks big time. DB is at the center of my workflow. Having my git
repository in it, my projects plans, etc. I just have to not forget to "turn
on, sync, turn off, work, turn on sync, turn off".

On the other hand, I didn't notice any difference in battery consumption on my
Windows 8 laptops. Who knows, maybe OS X Mavericks will change that with the
way it handles processes?

------
9h1d9j809s
I have noticed this as well. And it's not just Dropbox. I have turned off
Dropbox, Google Drive and Little Snitch.

------
czottmann
Which Dropbox client version are we talking about?

~~~
nicoschuele
As it is a fresh install, the last one.

~~~
czottmann
v2.2.8, then. Thanks.

