PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "sleep" befehl macht Festplatten zugriff



jebe
20.12.05, 09:32
hi,

ich bin auf ein sehr komisches problem gestossen:

der shell befehl "sleep" macht nen festplattenzugriff. ich höre das dann akustisch.

script:



#!/bin/sh
while true; do
sleep 3
done


strace output:



pulp@box:~$ strace sleep 3
execve("/usr/bin/sleep", ["sleep", "3"], [/* 35 vars */]) = 0
uname({sys="Linux", node="box", ...}) = 0
brk(0) = 0x804c000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=84866, ...}) = 0
mmap2(NULL, 84866, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f04000
close(3) = 0
open("/lib/tls/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P3\ 0\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=176352, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f03000
mmap2(NULL, 139424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ee0000
mmap2(0xb7f01000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x20) = 0xb7f01000
close(3) = 0
open("/lib/tls/librt.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\34 0\34"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=34582, ...}) = 0
mmap2(NULL, 29228, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ed8000
mmap2(0xb7ede000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5) = 0xb7ede000
close(3) = 0
open("/lib/tls/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\30 0P\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1366940, ...}) = 0
mmap2(NULL, 1162428, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dbc000
mprotect(0xb7ed1000, 27836, PROT_NONE) = 0
mmap2(0xb7ed2000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x115) = 0xb7ed2000mmap2(0xb7ed6000, 7356, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7ed6000
close(3) = 0
open("/lib/tls/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000 H\0\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=87827, ...}) = 0
mmap2(NULL, 70104, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7daa000
mmap2(0xb7db8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd) = 0xb7db8000
mmap2(0xb7dba000, 4568, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7dba000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7da9000
mprotect(0xb7ed2000, 4096, PROT_READ) = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7da9a20, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xb7f04000, 84866) = 0
set_tid_address(0xb7da9a68) = 17745
rt_sigaction(SIGRTMIN, {0xb7dae700, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xb7dae780, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
_sysctl({{CTL_KERN, KERN_VERSION}, 2, 0xbfd2cca0, 32, (nil), 0}) = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
brk(0) = 0x804c000
brk(0x806d000) = 0x806d000
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2586, ...}) = 0
mmap2(NULL, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7d89000
read(3, "# Locale name alias data base.\n#"..., 131072) = 2586
read(3, "", 131072) = 0
close(3) = 0
munmap(0xb7d89000, 131072) = 0
open("/usr/lib/locale/en_US/LC_IDENTIFICATION", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=378, ...}) = 0
mmap2(NULL, 378, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f18000
close(3) = 0
open("/usr/lib/locale/en_US/LC_MEASUREMENT", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=28, ...}) = 0
mmap2(NULL, 28, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f17000
close(3) = 0
open("/usr/lib/locale/en_US/LC_TELEPHONE", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=64, ...}) = 0
mmap2(NULL, 64, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f16000
close(3) = 0
open("/usr/lib/locale/en_US/LC_ADDRESS", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=160, ...}) = 0
mmap2(NULL, 160, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f15000
close(3) = 0
open("/usr/lib/locale/en_US/LC_NAME", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=82, ...}) = 0
mmap2(NULL, 82, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f14000
close(3) = 0
open("/usr/lib/locale/en_US/LC_PAPER", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=39, ...}) = 0
mmap2(NULL, 39, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f13000
close(3) = 0
open("/usr/lib/locale/en_US/LC_MESSAGES", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0
close(3) = 0
open("/usr/lib/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=57, ...}) = 0
mmap2(NULL, 57, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f12000
close(3) = 0
open("/usr/lib/locale/en_US/LC_MONETARY", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=291, ...}) = 0
mmap2(NULL, 291, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f11000
close(3) = 0
open("/usr/lib/locale/en_US/LC_TIME", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2456, ...}) = 0
mmap2(NULL, 2456, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f10000
close(3) = 0
open("/usr/lib/locale/en_US/LC_NUMERIC", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0
mmap2(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f0f000
close(3) = 0
open("/usr/lib/locale/en_US/LC_CTYPE", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=178476, ...}) = 0
mmap2(NULL, 178476, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7d7d000
close(3) = 0
clock_gettime(0, {1135071391, 446730000}) = 0
nanosleep({3, 0}, NULL) = 0
exit_group(0) = ?


jemand ne idee ?

gruss jebe


system: slack 10.2

AceTheFace
20.12.05, 09:51
Ach daher kommt das Geratter und ich nich zum "sleep". :)
Mein "sleeptimer" benutzt sleep nämlich, und die regelmässigen HD-Zugriffe stören da wirklich ein bisschen.

Gruß,
Ace

jebe
20.12.05, 09:58
hehe,

jo ich muste auch den rechner ausschalten weil das nervt tierisch

AceTheFace
20.12.05, 19:16
Ich habe diese absolut regelmässigen Zugriffe leider auch ohne "sleep" :(
Schade, hatte mich schon gefreut den Übeltäter gefunden zu haben.
Scheint wohl irgendein Logger zu sein.

Gruß,
Ace

BSM
20.12.05, 19:49
Wie stellt ihr euch das sonst vor? Sleep braucht erstmal das binary und noch libs.

Wenn ihr euer System ruhig stellen wollt installiert es auf eine SD Karte oder packt alles, was ihr für ein laufendes System benötigt ins Ram (ramdisk?)

Ansonsten wie immer alle Logger abschalten und/oder Syslog ins Ram schreiben lassen etc.

Gruß Robert

jebe
20.12.05, 21:35
zitat von dem typ der das geschrieben hat:



>even a self made program with uses the "sleep() or usleep()" C
>> function show the same behavier.


That's strange, but it indicates that the problem is not with
coreutils or with the C library, but with your kernel's implementation
of nanosleep. I'd say you should pursue this with whoever maintains
your kernel.


scheint also kernel config relatet. vielleicht ist die zeit extra päzise.. muss ich mal naschauen was ich da eingestellt habe

derguteweka
20.12.05, 22:08
Moin,

So wie ich euch kenn' habt ihr doch alle ein journaling-filesystem wie ext3 oder sowas - das macht halt nunmal immer irgendwelche Zugriffe. Die ganzen opens etc. die strace liefert, fuehren bei einem "normalen" System( d.h. kein akuter RAM-Mangel) hoechstens beim ersten Aufruf von sleep zu HD-Aktivitaet. Danach sollten die ganzen Files im Buffercache (=RAM) rumliegen und keine HD-Zugriffe mehr noetig sein.
Ich hab' hier 'n LFS laufen mit ext2 Filesystemen, da ist Ruhe im Karton, d.h. keine sicht-oder hoerbaren Festplattenzugriffe, wenn nix ist. Auch der Aufruf von sleep in der shell hat - wie erwartet nur beim ersten mal dazu gefuehrt, dass die HD-LED leuchtete, klaro - um eben die ganzen Libs usw. von der Pladde ins RAM zu laden.
Bei "normalen" Distries ist halt immer irgendwas, sei's der journald vom filesystem oder damit locate ganz doll funktioniert, muss ja auch alle Pups lang mal die gesamte Pladde gescannt werden, lauter so'n Zeugs - das fuehrt halt zu permanenter HD-Aktivitaet...

Gruss
WK

suck
20.12.05, 22:28
Ich habe alles versucht um diese regelmaessigen Zugriffe zu unterbinden, wenn "/" auf ne Platte gemountet ist hilft nix! Ich hab hier sogar nen Thread dazu erstellt, den keiner beantworten konnte (zu faul Link zu suchen). Es gibt allerdings Programme a la "Zugriff nur alle 15 Minuten statt 5 Sekunden" die ein wenig Abhilfe schaffen. Getestet habe ich damals ext2 und ext3 mit je "0 0" und "1 1" am Ende des fstab-eintrags. Ich testete im runlevel 1 und hatte zusaetzlich fast alles in den RAM gemountet.

jebe
20.12.05, 23:06
sodele, hab jetzt die lösung bzw nen typ auf der coreutils liste:

noatime option in fstab eintragen !!

beispiel hier:

/dev/hda2 / reiserfs defaults,noatime 1 1

juhhuu ich kann heut nacht wieder schlafen ,)

gruss jebe

suck
21.12.05, 01:35
Das hilft hier nicht..

jebe
21.12.05, 12:20
Das hilft hier nicht..

haste alle prozesses nacheinander gekilled und /tmp als tmpfs ?