Ich habe das auch gesehen.
Ich habe keine Lösung, aber ich habe eine Problemumgehung ( echo 3 | sudo tee /proc/sys/vm/drop_caches
) und möglicherweise mehr Informationen, damit jemand die Untersuchung fortsetzen kann.
Dies ist kein Netzwerkproblem, da unter "Paketliste lesen ..." nur Dateien eingelesen werden /var/lib/apt/lists/
. EIN:
strace -tt -T -fo strace.log apt-get update
gibt:
16394 14:43:03.921130 open("/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_precise_main_binary-i386_Packages", O_RDONLY|O_LARGEFILE) = 7 <0.000012>
[...]
16394 14:43:03.995238 read(6, "-3.1ubuntu2)\nConflicts: linux86\n"..., 32444) = 32444 <0.000111>
16394 14:43:05.787187 read(6, "c (<< 1:14.b.4-dfsg), erlang-exa"..., 32239) = 32239 <0.000069>
16394 14:43:05.788025 read(6, ".deb\nSize: 42130\nMD5sum: c7de671"..., 31695) = 31695 <0.000068>
16394 14:43:05.870734 read(6, "5: 29c4b395a92bdc12932f151c3643a"..., 31607) = 31607 <0.000071>
16394 14:43:05.890862 read(6, "e-pack-af-base\nFilename: pool/ma"..., 32538) = 32538 <0.000070>
16394 14:43:05.891425 read(6, "buntu-usb-live, ubuntu-dvd-live,"..., 32090) = 32090 <0.000066>
16394 14:43:05.891960 read(6, "cd9755b03ac2c9b8251125c7b6618\nDe"..., 32195) = 32195 <0.000034>
16394 14:43:06.043001 read(6, "rg>\nArchitecture: all\nVersion: 2"..., 32535) = 32535 <0.000072>
Sehen Sie, wie diese 8 read
Systemaufrufe über 2 Sekunden dauerten, obwohl jeder einzelne Anruf weniger als 1 ms dauert. Laufen time apt-get update
oder auf der Suche auf top
, ist dieser Prozess zwischen diesen beiden Anrufen nicht besetzt. Warum also die Verzögerung?
Dann habe ich gemacht:
echo t > /proc/sysrq-trigger
ein paar mal und schaute sich das Ergebnis in kern.log
:
apt-get D 00000000 0 16790 12706 0x00000000
e8695d30 00000086 f7bd5e6c 00000000 f7bd5e44 f74a6580 c1990e00 c1990e00
efe46efe 000042cb f7b9de00 e71a7230 f74a6580 c107e116 00000000 00000000
044aa200 00000000 00000000 00000000 00000000 e8695d0c e8695d0c c1038de8
Call Trace:
[<c107e116>] ? enqueue_entity+0x186/0x220
[<c1038de8>] ? default_spin_lock_flags+0x8/0x10
[<c15e13bd>] ? _raw_spin_lock_irqsave+0x2d/0x40
[<c15e0533>] schedule+0x23/0x60
[<c15deecf>] schedule_timeout+0x12f/0x290
[<c1075c38>] ? ttwu_do_activate.constprop.86+0x58/0x70
[<c1055190>] ? usleep_range+0x40/0x40
[<c15e0846>] io_schedule_timeout+0x86/0xd0
[<c15cef7d>] balance_dirty_pages.isra.17+0x3f5/0x4b4
[<c15e118d>] ? _raw_spin_lock+0xd/0x10
[<c1180781>] ? __set_page_dirty_buffers+0x81/0xb0
[<c110deb5>] ? set_page_dirty+0x55/0x60
[<c11812c9>] ? __block_page_mkwrite+0xe9/0x170
[<c110f3ae>] balance_dirty_pages_ratelimited_nr+0xde/0x100
[<c1126f53>] do_wp_page+0x503/0x830
[<c1128ef7>] handle_pte_fault+0x267/0x2c0
[<c1129c62>] handle_mm_fault+0x1e2/0x280
[<c15e4988>] do_page_fault+0x158/0x4c0
[<c104e4dc>] ? irq_exit+0x5c/0xa0
[<c15e22d0>] ? do_debug+0x180/0x180
[<c15e4830>] ? vmalloc_fault+0x195/0x195
[<c15e1c53>] error_code+0x67/0x6c
Ich bin mir also nicht sicher, was das bedeutet, aber das betrifft die Behandlung von Seitenfehlern. Dies weist auf ein potenzielles Speicherverwaltungsproblem hin.
Ich habe dann versucht ein:
echo 3 >/proc/sys/vm/drop_caches
Und das ließ das Problem verschwinden.
Nun sieht es sehr nach einem Kernelproblem aus. Also habe ich auf den neuesten Kernel aktualisiert (3.8 Backport von raring
) und das ist, wo ich bin. Wird aktualisiert, wenn das Problem mit dem neueren Kernel weiterhin besteht.
Bearbeiten
Das Problem besteht weiterhin mit dem neuen Kernel, wenn auch nicht so schlimm. Und das Gleiche,
echo 3 | sudo tee /proc/sys/vm/drop_caches
löscht das Problem für eine Weile. Ich habe das nur auf MSI-Laptops gesehen (Produktname: CR61 2M / CX61 2OC / CX61 2OD).
Edit Dezember 2015
Wie durch btrace
aptitude
/ bestätigt apt-get
, werden momentan einige Datenträger-E / A-Vorgänge ausgeführt. Es hat eine temporäre Datei ( /var/cache/apt/pkgcache.bin.<random-chars>
) im Speicher, weshalb sie in der strace
Ausgabe nicht angezeigt wird .
Ich kann immer noch nicht erklären, warum dies nur auf einigen Computern der Fall ist, warum das Löschen von Caches hilft und warum das Wechseln auf 64-Bit hilft.
Wenn jemand es reproduzieren kann, könnte ein interessanter Test sein, zu sehen, ob dies auch passiert, wenn er unter eatmydata
oder /var/cache/apt
auf tmpfs
eine Ramdisk läuft oder dies hilft.
sudo apt-get update
, richtig?