Warum verwendet Dropbox unter Linux so viel Speicher?

pmap zeigt, dass Dropbox fast 200 MB Speicher verwendet (unter Linux). Wenn ich Dropbox unter Windows ausführe, werden nur etwa 30 MB Speicher verwendet. Was ist der Grund dafür?

Warum gibt es so viele [ anon ] Bereiche, die laut pmap-Ausgabe so viel Speicher belegen?

[mirror@home Dropbox]$ pgrep dropbox
9544

9544:   /home/mirror/.dropbox-dist/dropbox
08048000   3028K r-x--  /home/mirror/.dropbox-dist/dropbox
0833d000    248K rw---  /home/mirror/.dropbox-dist/dropbox
0837b000     52K rw---    [ anon ]
08c20000  15688K rw---    [ anon ]
ad052000   1028K rw---    [ anon ]
ad1d4000   1024K rw---    [ anon ]
ad3d4000   1024K rw---    [ anon ]
ad5d4000      4K -----    [ anon ]
ad5d5000  10240K rw---    [ anon ]
adfd5000      4K -----    [ anon ]
adfd6000  10240K rw---    [ anon ]
ae9d6000      4K -----    [ anon ]
ae9d7000  10240K rw---    [ anon ]
af3d7000      4K -----    [ anon ]
af3d8000  10240K rw---    [ anon ]
afdd8000      4K -----    [ anon ]
afdd9000  10240K rw---    [ anon ]
b07d9000      4K -----    [ anon ]
b07da000  10240K rw---    [ anon ]
b11da000      4K -----    [ anon ]
b11db000  10240K rw---    [ anon ]
b1bdb000      4K -----    [ anon ]
b1bdc000  10240K rw---    [ anon ]
b25dc000      4K -----    [ anon ]
b25dd000  10240K rw---    [ anon ]
b2fdd000      4K -----    [ anon ]
b2fde000  10240K rw---    [ anon ]

........

b7fc6000      4K rw---  /lib/libpthread-2.5.so
b7fc7000     12K rw---    [ anon ]
b7fca000      4K r-x--  /home/mirror/.dropbox-dist/_bisect.so
b7fcb000      4K rw---  /home/mirror/.dropbox-dist/_bisect.so
b7fcc000     20K r-x--  /home/mirror/.dropbox-dist/_struct.so
b7fd1000      4K rw---  /home/mirror/.dropbox-dist/_struct.so
b7fd2000    108K r-x--  /lib/ld-2.5.so
b7fed000      4K r----  /lib/ld-2.5.so
b7fee000      4K rw---  /lib/ld-2.5.so
bfa77000    156K rw---    [ stack ]
 total   194620K
Author: amiregelz, 2012-09-06

4 answers

pmap zeigt den virtuellen Speicher [[5]} eines Prozesses an – also nicht nur Orte, an denen der Prozess Daten und Stacks speichert, sondern auch dynamisch geladene Bibliotheken, Speicherzuordnungsdateien, gemeinsam genutzten Speicher usw. Sehr wenige davon tragen tatsächlich zu den resident oder shared Segmenten bei, die die tatsächliche Ressourcennutzung darstellen würden.

Mit anderen Worten, Sie sehen sich die falschen Zahlen an. Sehen Sie sich für "Speichernutzung" das Feld "RSS" in ps oder "RES" in an top/htop.

Zum Beispiel ist Dropbox auf meinem System ungefähr 38 MB groß, obwohl sein virtueller Speicherplatz über 1,7 GB beträgt.

 7
Author: user1686,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-09-06 18:31:48

Nach https://www.dropbox.com/en/help/144

Willst du mehr Details? Dropbox speichert Metadaten auf Ihren Dateien im RAM, um konstante und teure Datenbank-Lookups während der Synchronisierung zu verhindern. Die Metadaten enthalten Pfade zu Dateien in Ihrer Dropbox, Prüfsummen,Änderungszeiten usw.

Wir arbeiten hart daran, diese Informationen kompakter zu gestalten und arbeiten an mehreren Fronten, um die Speichernutzung zu verbessern. Unsere Techniken sind nicht auf das Umschreiben von Stücken unserer beschränkt quellcode und Schreiben von benutzerdefinierten Speicherzuordnungen.

Auf meinem Computer ist die Größe von Dropbox jedoch 150 MB+ (gemäß top). Meine Dropbox enthält 4261 Dateien+Ordner, was zu 36 KB pro Datei führt... Die Rohdaten, die sie erwähnen, sollten nicht mehr als etwa 200bytes pro Datei verwenden. Datenstrukturen können natürlich einen erheblichen Overhead haben.

Nur zum Spaß habe ich die Speichernutzung von Python überprüft und ein Wörterbuch der Dateien in meinem Dropbox-Ordner gespeichert:

import os
files = { f[0]: (f[0], (1,2,3,4,5), 1, 1) for f in os.walk(".") }

Dies ergibt einen RSS von 9.6 MB

Dies ist natürlich sehr vereinfacht, aber es scheint unwahrscheinlich, dass Dropbox einen sehr guten Job macht, einen geringen Speicherbedarf zu halten.

PS: Dies scheint kein Linux-Client-Problem zu sein: https://www.dropboxforum.com/hc/en-us/community/posts/204452623-Memory-Usage-Disproportionate-to-Dropbox-Contents

Hallo, ich verwende Dropbox unter Windows7 64bit und verwende es, um etwas mehr als 500 KB über 200 Dateien auf meinen Geräten zu synchronisieren.

Wie auch immer, der Dropbox-Client wird konsistent mit 95 MB RAM ausgeführt, was meiner Meinung nach etwas unvernünftig ist.

 2
Author: olejorgenb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-06-28 10:51:45

Verwenden Sie pmap -x, um das erweiterte Format anzuzeigen, einschließlich RSS:

$ pmap -x $(pgrep -x dropbox)
3015:   /home/nathaniel/.dropbox-dist/dropbox-lnx.x86_64-26.4.24/dropbox
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000000400000    4584    4260       0 r-x-- dropbox
0000000000400000       0       0       0 r-x-- dropbox
0000000000a7a000     120     116       4 r---- dropbox
0000000000a7a000       0       0       0 r---- dropbox
0000000000a98000     360     360     216 rw--- dropbox
0000000000a98000       0       0       0 rw--- dropbox
0000000000af2000      84      80      80 rw---   [ anon ]
.                      .       .       . .     .
.                      .       .       . .     .
.                      .       .       . .     .
00007ffcc8d5b000       8       4       0 r-x--   [ anon ]
00007ffcc8d5b000       0       0       0 r-x--   [ anon ]
ffffffffff600000       4       0       0 r-x--   [ anon ]
ffffffffff600000       0       0       0 r-x--   [ anon ]
---------------- ------- ------- ------- 
total kB         3031520  214308  169808

Auf diese Weise können Sie den Unterschied zwischen virtuellem Speicher erkennen und der Speicher, den Dropbox tatsächlich verwendet (RSS). Hier ist eine gute Erklärung des Prozessspeichers:

Https://techtalk.intersec.com/2013/07/memory-part-1-memory-types/

Wenn Sie wollen einfach nur die RSS-Feeds, die Sie verwenden können ps so::

$ ps -o pid,rss,cmd -p $(pgrep -x dropbox)
 PID   RSS CMD
3015 212768 /home/nathaniel/.dropbox-dist/dropbox-lnx.x86_64-26.4.24/dropbox

Ich finde, dass Dropbox unter Linux viel Speicher leckt, mindestens in version 2015.10.28. Nach einer Woche oder so kann der RSS bis zu mehr als ein GB kriechen. Meine Problemumgehung besteht darin, sie regelmäßig neu zu starten. Hier ist ein minimales Skript zum Neustart von Dropbox:

# /usr/bin/env sh
dropbox stop
while pgrep -x dropbox > /dev/null
do
    dropbox status
    sleep 1
done
dropbox start
 1
Author: Nathaniel M. Beaver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-28 00:45:35

Ich bemerkte auch, dass Dropbox fast den gesamten verfügbaren Speicher unter Linux Mint 17.1 und später unter 18.0 verwendete.

Ich habe dies gesehen, als ich den Systemmonitor geöffnet, auf die Registerkarte "Prozesse" geklickt und oben in der Spalte "Speicher" geklickt habe, um nach der größten Speichernutzung zu sortieren.

Ein Neustart hat das problem nicht beheben. Nach einem Neustart startete Dropbox den Prozess der Verwendung von mehr und mehr Speicher neu.

Das hat bei mir funktioniert, aber lies zuerst die folgende Warnung:

Ändern Sie die Berechtigungen von Dateien in Ihr dropbox-Ordner.

sudo chmod 755 -R ~/Dropbox

Starten Sie den Computer neu oder beenden Sie alle dropbox-Prozesse und starten Sie dropbox. Hinweis:" dropbox stop " kann nicht genug sein.

Führen Sie dies aus und Sie sollten "Up to date" sehen

dropbox status

Warnung: Wenn Sie Konfigurationsdateien in Dropbox gespeichert haben, die andere Berechtigungen als 755 haben, kann das Wiederherstellen dieser Dateien mit geänderten Berechtigungen zu Problemen führen. Sie können Möglichkeiten zum Speichern und Wiederherstellen von Dateiberechtigungen finden, wenn dies ein Problem ist. Kopieren Sie zumindest die Originaldatei in eine andere Dateiname vor dem wiederherstellen der Dropbox-version. Dann wissen Sie, was die ursprünglichen Berechtigungen waren, wenn etwas kaputt geht. Oder bearbeiten Sie die Originaldatei mit den richtigen Berechtigungen-kopieren Sie den gewünschten Teil der Dropbox-Datei und fügen Sie ihn ein, indem Sie ihn ersetzen oder zur Originaldatei hinzufügen.

 -1
Author: Charles Young,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-06-30 10:17:48