Re: Linux Resourcenverwaltung

Autor: Werner Holtfreter <Holtfreter_at_gmx.de>
Datum: Sat, 01 Dec 2012 00:08:43 +0100
Am Freitag, den 30.11.2012, 03:39 +0100 schrieb Alexander Holler:
> Am 30.11.2012 00:38, schrieb Werner Holtfreter:

> > Ich habe jetzt sehr viel getestet, um die minimal erforderliche
> > Speicherzuweisung zu ermitteln.
> > 
> > Mit 23 MB lief "dd if=$historyint of=$historyext bs=1M"
> > 35 x stabil mit einer kompletten Festplatte durch.
> > 
> > Aber merkwürdiger Weise gibt es keine feste Grenze. Geringere
> > RAM-Freigabe führt nur *manchmal* zum vorzeitigen Abbruch, nach
> > unterschiedlich langer Laufzeit.
> > 
> > Ganz unerklärlich ist mir, weshalb 23 MB gebraucht werden. Vorstellen
> > könnte ich mir je 1 MB für Eingabepuffer, Ausgabepuffer und Programm.
> > Aber wozu 23 MB? 23 x der RAM-Größe, von der B.G. meinte, sie würde für
> > alle Zeit reichen. Hier geht es nur um einen Kopierbefehl!
> 
> Ich bezweifle, daß dir jemand bei dieser Informationsfülle auch nur
> irgendetwas annähernd zutreffendes sagen kann. Was ist ein vorzeitiger
> Abbruch? Was ist Quelle (HW, FS)? Was ist Ziel (HW, FS)? Welcher Kernel?
> Welche Einschränkungen (nur Userland oder auch Kernelspeicher)? ...?

3.0.0-27-generic #44-Ubuntu
Kopie von SATA-Platte zu SATA-Platte
ReiserFS auf Systemplatte und Quell und Zielplatte
  (für die letzten beiden Platten irrelelevant, da dd das Dateisystem
  nicht beachtet)

Ich füge unten an:

  den Aufruf des Scripts
  das Script
  das syslog der Sekunde des Abbruchs

Um den Abbruch zu bewirken, habe ich den RAM auf 4 MB begrenzt. dd lief
immerhin 2 min lang. Unter identischen Bedingungen lief der
Kopiervorgang beim nächsten Versuch 29 min.

> Du musst das nicht wirklich beantworten, aber alleine schon die Frage
> nach dem FS liefert Dir evtl. einen Hinweis, wofür zumindest ein Teil
> des RAM gebraucht wird. Dein Aufruf von dd schaufelt die Daten nur in
> Blöcken von 1MB von irgendwoher nach irgendwohin. Mehr ist dem nicht zu
> entnehmen und viel mehr kann dd auch nicht. Du kannst dir auch mal
> überlegen, was passiert, wenn das Schreiben langsamer geht als das
> Lesen. dd hat auch keinerlei Ahnung von Geschwindigkeiten, das schaufelt
> einfach nur so lange es etwas lesen kann und das Ziel (im übertragenen
> Sinne) nicht "Halt" oder "Pause" schreit.

Speichermangel scheint ja "Pause" zu generieren, denn wird der RAM nicht
begrenzt, steigt die buffer-Belegung binnen Sekunden auf die
Größenordung von 1 GB, bei Begrenzung aber nicht.

> Und zu dem Hinweis bzgl. den 640KB von B.G. kann man nur sagen, daß die
> heutzutage schon locker mit den Dateinamen aller Dateien mancher
> Verzeichnisse füllen kannst

Ich bin nicht der erste, der die dramatisch unterschiedliche
Wachstumsgeschwindigkeit der vorhandenen und benötigten(!)
Hardware-Leistung und ihrem Nutzwert in der Büroumgebung thematisiert.
Das damit einhergehende Unbehagen ließe sich vielleicht mildern, wenn
man die Ursachen erahnen würde. Mehr als erahnen überfordert mich. So
erschien mir obige simple Kopiervorgang geeignet, exemplarisch zu
erfragen, woher der gewaltige Resourcenbedarf kommt. Viele werden sagen,
was kümmern dich die 23 MB, das ist nur 1 % deines RAM. Offenbar denken
auch Programmierer so, mit der geschilderten Folge.

Abgesehen davon könnte der Speicherbedarf auch auf ein unerkanntes
Problem hindeuten, daher liefere ich nun doch genauere Infos nach.

Viele Grüße
Werner Holtfreter
###############################
Aufruf des Scripts
###############################

root_at_zuse:~# time /home/werner/Dokumente/Computer/scripte/backuptest2
/home/werner/Dokumente/Computer/scripte/backuptest2:
  Zeile 11: 8083 Getötet   dd if=/dev/sdb of=/dev/sdc bs=1M

real	1m49.097s
user	0m0.048s
sys	1m8.160s
root_at_zuse:~#

###############################
Script
###############################
#! /bin/bash -e

mkdir /cgroup || true
mount -t cgroup -o memory nodev /cgroup || true
mkdir /cgroup/memlimit || true
cd /cgroup/memlimit/
echo 4M > memory.limit_in_bytes

dd if=/dev/sdb of=/dev/sdc bs=1M &
echo $! > tasks
wait

cd ..
rmdir memlimit/
cd /
umount /cgroup
rm -rf /cgroup

beep -r 3


###############################
syslog der Sekunde des Abbruchs
###############################
dd invoked oom-killer: gfp_mask=0xd0, order=0, oom_adj=0, oom_score_adj=0
dd cpuset=/ mems_allowed=0
Pid: 8060, comm: dd Tainted: P            3.0.0-27-generic #44-Ubuntu
Call Trace:
 [<ffffffff810b57fd>] ? cpuset_print_task_mems_allowed+0x9d/0xb0
 [<ffffffff8110dbc1>] dump_header+0x91/0xe0
 [<ffffffff8110df25>] oom_kill_process+0x85/0xb0
 [<ffffffff8110dffb>] mem_cgroup_out_of_memory+0xab/0xf0
 [<ffffffff811624fa>] mem_cgroup_handle_oom+0x27a/0x2b0
 [<ffffffff8115da50>] ? mc_handle_file_pte+0x120/0x120
 [<ffffffff81162654>] mem_cgroup_do_charge+0x124/0x150
 [<ffffffff811627b3>] __mem_cgroup_try_charge+0x133/0x360
 [<ffffffff81163a8a>] mem_cgroup_cache_charge+0x12a/0x180
 [<ffffffff8110ae19>] add_to_page_cache_locked+0x49/0x90
 [<ffffffff811168d8>] ? __lru_cache_add+0x68/0x90
 [<ffffffff8110ae8f>] add_to_page_cache_lru+0x2f/0x80
 [<ffffffff81115406>] read_pages+0xd6/0x100
 [<ffffffff81115593>] __do_page_cache_readahead+0x163/0x180
 [<ffffffff81115901>] ra_submit+0x21/0x30
 [<ffffffff81115a25>] ondemand_readahead+0x115/0x230
 [<ffffffff811420c0>] ? swap_entry_free+0x140/0x1b0
 [<ffffffff81115c21>] page_cache_sync_readahead+0x31/0x50
 [<ffffffff8110b5b6>] do_generic_file_read.constprop.36+0x2b6/0x440
 [<ffffffff8110c4df>] generic_file_aio_read+0xef/0x280
 [<ffffffff81130bf1>] ? handle_pte_fault+0x1b1/0x210
 [<ffffffff81169022>] do_sync_read+0xd2/0x110
 [<ffffffff81286203>] ? security_file_permission+0x93/0xb0
 [<ffffffff81169361>] ? rw_verify_area+0x61/0xf0
 [<ffffffff81169840>] vfs_read+0xb0/0x180
 [<ffffffff8116995a>] sys_read+0x4a/0x90
 [<ffffffff815ffe82>] system_call_fastpath+0x16/0x1b
Task in /memlimit killed as a result of limit of /memlimit
memory: usage 3072kB, limit 3072kB, failcnt 3095
memory+swap: usage 3704kB, limit 9007199254740991kB, failcnt 0
Mem-Info:
Node 0 DMA per-cpu:
CPU    0: hi:    0, btch:   1 usd:   0
CPU    1: hi:    0, btch:   1 usd:   0
Node 0 DMA32 per-cpu:
CPU    0: hi:  186, btch:  31 usd: 137
CPU    1: hi:  186, btch:  31 usd:  87
active_anon:185957 inactive_anon:63857 isolated_anon:0
 active_file:78921 inactive_file:15211 isolated_file:0
 unevictable:4 dirty:0 writeback:703 unstable:0
 free:336624 slab_reclaimable:11153 slab_unreclaimable:6284
 mapped:36794 shmem:1659 pagetables:7412 bounce:0
Node 0 DMA free:15776kB min:236kB low:292kB high:352kB active_anon:0kB inactive_anon:40kB active_file:4kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15684kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:8kB slab_unreclaimable:72kB kernel_stack:8kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 2886 2886 2886
Node 0 DMA32 free:1330720kB min:44816kB low:56020kB high:67224kB active_anon:743828kB inactive_anon:255388kB active_file:315680kB inactive_file:60844kB unevictable:16kB isolated(anon):0kB isolated(file):0kB present:2956204kB mlocked:16kB dirty:0kB writeback:2812kB mapped:147176kB shmem:6636kB slab_reclaimable:44604kB slab_unreclaimable:25064kB kernel_stack:3040kB pagetables:29648kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
Node 0 DMA: 10*4kB 7*8kB 6*16kB 7*32kB 10*64kB 7*128kB 6*256kB 6*512kB 5*1024kB 2*2048kB 0*4096kB = 15776kB
Node 0 DMA32: 15926*4kB 23727*8kB 13941*16kB 6486*32kB 3067*64kB 1150*128kB 354*256kB 149*512kB 55*1024kB 27*2048kB 6*4096kB = 1330720kB
96042 total pagecache pages
247 pages in swap cache
Swap cache stats: add 11337, delete 11090, find 6616/8105
Free swap  = 2059712kB
Total swap = 2061308kB
753376 pages RAM
13717 pages reserved
189672 pages shared
333984 pages non-shared
[ pid ]   uid  tgid total_vm      rss cpu oom_adj oom_score_adj name
[ 8060]     0  8060     3463      175   0       0             0 dd
Memory cgroup out of memory: Kill process 8060 (dd) score 1 or sacrifice child
Killed process 8060 (dd) total-vm:13852kB, anon-rss:108kB, file-rss:592kB
dd invoked oom-killer: gfp_mask=0xd0, order=0, oom_adj=0, oom_score_adj=0
dd cpuset=/ mems_allowed=0
Pid: 8083, comm: dd Tainted: P            3.0.0-27-generic #44-Ubuntu
Call Trace:
 [<ffffffff810b57fd>] ? cpuset_print_task_mems_allowed+0x9d/0xb0
 [<ffffffff8110dbc1>] dump_header+0x91/0xe0
 [<ffffffff8110df25>] oom_kill_process+0x85/0xb0
 [<ffffffff8110dffb>] mem_cgroup_out_of_memory+0xab/0xf0
 [<ffffffff811624fa>] mem_cgroup_handle_oom+0x27a/0x2b0
 [<ffffffff8115da50>] ? mc_handle_file_pte+0x120/0x120
 [<ffffffff81162654>] mem_cgroup_do_charge+0x124/0x150
 [<ffffffff811627b3>] __mem_cgroup_try_charge+0x133/0x360
 [<ffffffff81163a8a>] mem_cgroup_cache_charge+0x12a/0x180
 [<ffffffff8110ae19>] add_to_page_cache_locked+0x49/0x90
 [<ffffffff811168d8>] ? __lru_cache_add+0x68/0x90
 [<ffffffff8110ae8f>] add_to_page_cache_lru+0x2f/0x80
 [<ffffffff81115406>] read_pages+0xd6/0x100
 [<ffffffff81115593>] __do_page_cache_readahead+0x163/0x180
 [<ffffffff81115901>] ra_submit+0x21/0x30
 [<ffffffff81115a25>] ondemand_readahead+0x115/0x230
 [<ffffffff81115c21>] page_cache_sync_readahead+0x31/0x50
 [<ffffffff8110b5b6>] do_generic_file_read.constprop.36+0x2b6/0x440
 [<ffffffff8110c4df>] generic_file_aio_read+0xef/0x280
 [<ffffffff81130bf1>] ? handle_pte_fault+0x1b1/0x210
 [<ffffffff81169022>] do_sync_read+0xd2/0x110
 [<ffffffff81286203>] ? security_file_permission+0x93/0xb0
 [<ffffffff81169361>] ? rw_verify_area+0x61/0xf0
 [<ffffffff81169840>] vfs_read+0xb0/0x180
 [<ffffffff8116995a>] sys_read+0x4a/0x90
 [<ffffffff815ffe82>] system_call_fastpath+0x16/0x1b
Task in /memlimit killed as a result of limit of /memlimit
memory: usage 4096kB, limit 4096kB, failcnt 1584935
memory+swap: usage 4500kB, limit 9007199254740991kB, failcnt 0
Mem-Info:
Node 0 DMA per-cpu:
CPU    0: hi:    0, btch:   1 usd:   0
CPU    1: hi:    0, btch:   1 usd:   0
Node 0 DMA32 per-cpu:
CPU    0: hi:  186, btch:  31 usd: 117
CPU    1: hi:  186, btch:  31 usd: 165
active_anon:183747 inactive_anon:63887 isolated_anon:0
 active_file:92891 inactive_file:1453 isolated_file:0
 unevictable:4 dirty:0 writeback:888 unstable:0
 free:338604 slab_reclaimable:11151 slab_unreclaimable:6283
 mapped:36783 shmem:1643 pagetables:7435 bounce:0
Node 0 DMA free:15776kB min:236kB low:292kB high:352kB active_anon:0kB inactive_anon:40kB active_file:4kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15684kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:8kB slab_unreclaimable:72kB kernel_stack:8kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 2886 2886 2886
Node 0 DMA32 free:1338640kB min:44816kB low:56020kB high:67224kB active_anon:734988kB inactive_anon:255508kB active_file:371560kB inactive_file:5812kB unevictable:16kB isolated(anon):0kB isolated(file):0kB present:2956204kB mlocked:16kB dirty:0kB writeback:3552kB mapped:147132kB shmem:6572kB slab_reclaimable:44596kB slab_unreclaimable:25060kB kernel_stack:3040kB pagetables:29740kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
Node 0 DMA: 10*4kB 7*8kB 6*16kB 7*32kB 10*64kB 7*128kB 6*256kB 6*512kB 5*1024kB 2*2048kB 0*4096kB = 15776kB
Node 0 DMA32: 17976*4kB 23631*8kB 13949*16kB 6490*32kB 3069*64kB 1151*128kB 354*256kB 149*512kB 55*1024kB 27*2048kB 6*4096kB = 1338664kB
96255 total pagecache pages
270 pages in swap cache
Swap cache stats: add 12093, delete 11823, find 6980/8505
Free swap  = 2059848kB
Total swap = 2061308kB
753376 pages RAM
13717 pages reserved
187062 pages shared
331870 pages non-shared
[ pid ]   uid  tgid total_vm      rss cpu oom_adj oom_score_adj name
[ 8083]     0  8083     3463      210   0       0             0 dd
Memory cgroup out of memory: Kill process 8083 (dd) score 1 or sacrifice child
Killed process 8083 (dd) total-vm:13852kB, anon-rss:248kB, file-rss:592kB

-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/
Empfangen am 01.12.2012

Dieses Archiv wurde generiert von hypermail 2.2.0 : 01.12.2012 CET