HOWTO: Enable SWAP

to stream or not to stream
palace
Erleuchteter
Erleuchteter
Beiträge: 441
Registriert: Dienstag 11. März 2003, 03:42

HOWTO: Enable SWAP

Beitrag von palace »

Derzeit ist es mindestens für Eigner grosser Festplatten (Filesystemcheck http://tuxbox-forum.dreambox-fan.de/for ... hp?t=42777) und Extrem-EPG-Speicherer interessant, SWAP einzuschalten.

Dies ist möglich seit dem JtG Snap vom 17.9.2006 und wird in:

"dbox -> Einstellungen -> Treiber- und Bootoptionen -> Swap aktivieren (nur für IDE) : EIN" aktiviert.

Sollte jemand, z.B. wegen "ext2" eine eigene "init_ide" verwenden, sollte noch der Teil "if .swap ... fi" eingefügt werden.

Box neu starten.

Da ich die Erfahrung gemacht habe, dass der Box das nicht gleich gefällt, Box ein paar Minuten laufen lassen und noch mal neu starten.

FERTIG!

Ob SWAP aktiv ist kann man mit "top" oder "free" sehen:

Code: Alles auswählen

~ > free
              total         used         free       shared      buffers
  Mem:        30704        28396         2308            0         1764
 Swap:      1028148        13600      1014548
Total:      1058852        41996      1016856
Gerade bei Satboxen sollte nun ein umfangreicheres EPG möglich sein.
Allerdings wird der sectionsd bereits ab 8000 Events auffällig unternehmungslustig.

Das "Festplattencheck 0.3" von DrStoned läuft nun auch auf grossen Platten ohne Neutrino beenden zu müssen ohne Zeitverlust gegenüber deaktiviertem SWAP - im Gegenteil.

Beobachtet wurde, dass swapping während einer Aufnahme zu "DMX Buffer Overflows" führen kann.
Es so auszureizen, dass die Box abgeschmiert ist, ist mir indes noch nicht gelungen.
Aber: Man sollte daran denken, dass selbst "top" oder "free" ausgelagert werden können und beim Eintippen eines simplen Befehls die Platte erst anlaufen muss. Derzeit habe ich die Zeit zum Standby erstmal auf 10 Min erhöht, denke aber über 1/2 oder 1h nach.
Soli
Interessierter
Interessierter
Beiträge: 44
Registriert: Montag 5. Mai 2003, 08:44

Beitrag von Soli »

Hi,

SWAP funktioniert derzeit bei Kernel 2.4.33.3 (hier im CVS)leider noch nicht.
Da SWAP im das JTG Image funktioniert...könnte jemand die Änderung an den Kernelsourcen hier posten, damit SWAP funktioniert ?

danke
Soli
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Beitrag von Rebel1 »

Soli
Interessierter
Interessierter
Beiträge: 44
Registriert: Montag 5. Mai 2003, 08:44

Beitrag von Soli »

Hi,

hast du das selber gepatcht ?

Die werte sind beim 2.6er Kernel defaultmäßig anders

Denn die reine Änderung hat nix gebracht...

#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 8 })
#define __swp_entry_to_pte(x) ((pte_t) { (x).val << 8 })
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Beitrag von Rebel1 »

Hi,
ja ich habe selber gepatcht und hatte schlussendlich gute Ergebnisse mit den Werten aus dem 2.6er Kernel die auch carjay benutzt hat.

Code: Alles auswählen

--- /cdk/linux/include/asm-ppc/pgtable.h        2006-08-31 19:03:20.000000000 +0200
+++ /cdk/linux/include/asm-ppc/pgtable.h        2006-09-19 00:28:09.000000000 +0200
@@ -629,11 +629,11 @@
  * must not include the _PAGE_PRESENT bit, or the _PAGE_HASHPTE bit
  * (if used).  -- paulus
  */
-#define SWP_TYPE(entry)                        ((entry).val & 0x3f)
-#define SWP_OFFSET(entry)              ((entry).val >> 6)
-#define SWP_ENTRY(type, offset)                ((swp_entry_t) { (type) | ((offset) << 6) })
-#define pte_to_swp_entry(pte)          ((swp_entry_t) { pte_val(pte) >> 2 })
-#define swp_entry_to_pte(x)            ((pte_t) { (x).val << 2 })
+#define SWP_TYPE(entry)                        ((entry).val & 0x1f)
+#define SWP_OFFSET(entry)              ((entry).val >> 5)
+#define SWP_ENTRY(type, offset)                ((swp_entry_t) { (type) | ((offset) << 5) })
+#define pte_to_swp_entry(pte)          ((swp_entry_t) { pte_val(pte) >> 8 })
+#define swp_entry_to_pte(x)            ((pte_t) { (x).val << 8 })

 /* CONFIG_APUS */
 /* For virtual address to physical address conversion */
Gruß,
Rebel1
Carjay
Developer
Beiträge: 122
Registriert: Sonntag 23. April 2006, 12:37

Beitrag von Carjay »

Das war sowieso mehr ein schneller Workaround, man begrenzt dadurch die maximal verwaltbare Swap-Größe eben von 64 auf 2 GiByte (pro Partition), das ließe sich auch eleganter lösen, aber reicht fürs erste wohl.

Interessant, daß im 2.4er da andere Grenzen benutzt wurden, hm, waren wohl die Bits noch etwas anders zugeordnet.
Soli
Interessierter
Interessierter
Beiträge: 44
Registriert: Montag 5. Mai 2003, 08:44

Beitrag von Soli »

Hi,

ich denke das SWAP funktioniert damit auch nicht richtig. Ich hatte das schon so drin..

Wenn ich SWAP aktiviere..und in mein /TMP eine große Datei reinkopiere, zb 27MB dann stürzt die Box so gut wie ab...

Das dürfte doch normalerweise nicht passieren ???

Code: Alles auswählen

/sbin/swapon /dev/ide/host0/bus0/target0/lun0/part1
Adding Swap: 64500k swap-space (priority -1)
/ # free
              total         used         free       shared      buffers
  Mem:        30836        18444        12392            0           48
 Swap:        64500            0        64500
Total:        95336        18444        76892
/ # free
              total         used         free       shared      buffers
  Mem:        30836        21180         9656            0           48
 Swap:        64500            0        64500
Total:        95336        21180        74156
/ # free
              total         used         free       shared      buffers
  Mem:        30836        23912         6924            0           48
 Swap:        64500            0        64500
Total:        95336        23912        71424
/ # free
              total         used         free       shared      buffers
  Mem:        30836        24884         5952            0           48
 Swap:        64500            0        64500
Total:        95336        24884        70452
/ # free
              total         used         free       shared      buffers
  Mem:        30836        25856         4980            0           48
 Swap:        64500            0        64500
Total:        95336        25856        69480
/ # free
              total         used         free       shared      buffers
  Mem:        30836        26856         3980            0           48
 Swap:        64500            0        64500
Total:        95336        26856        68480
/ # free
              total         used         free       shared      buffers
  Mem:        30836        27880         2956            0           48
 Swap:        64500            0        64500
Total:        95336        27880        67456
/ # free
              total         used         free       shared      buffers
  Mem:        30836        29184         1652            0           48
 Swap:        64500            0        64500
Total:        95336        29184        66152
/ # free
              total         used         free       shared      buffers
  Mem:        30836        30172          664            0           48
 Swap:        64500            0        64500
Total:        95336        30172        65164
/ # free
              total         used         free       shared      buffers
  Mem:        30836        30244          592            0           48
 Swap:        64500            0        64500
Total:        95336        30244        65092
/ # free
              total         used         free       shared      buffers
  Mem:        30836        30240          596            0           44
 Swap:        64500            0        64500
Total:        95336        30240        65096
/ # free
              total         used         free       shared      buffers
  Mem:        30836        30220          616            0           40
 Swap:        64500          552        63948
Total:        95336        30772        64564
/ # __alloc_pages: 0-order allocation failed (gfp=0x1f0/0)
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process timerd
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process sh
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process controld
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process timerd
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process in.ftpd
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process neutrino
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process sectionsd
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
__alloc_pages: 0-order allocation failed (gfp=0x1f0/0)
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process sectionsd
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process neutrino
__alloc_pages: 0-order allocation failed (gfp=0x1f2/0)
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process zapit

Please press Enter to activate this console. Killed
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process start_neutrino
Killed
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0)
VM: killing process in.ftpd
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Beitrag von Rebel1 »

Soli hat geschrieben:Hi,

ich denke das SWAP funktioniert damit auch nicht richtig. Ich hatte das schon so drin..

Wenn ich SWAP aktiviere..und in mein /TMP eine große Datei reinkopiere, zb 27MB dann stürzt die Box so gut wie ab...

Das dürfte doch normalerweise nicht passieren ???
Merkwürdig, konnte ich bis jetzt noch nicht so feststellen. Meine Box läuft nun schon seit dem Wochenende so ohne Probleme, Neutrino ist weder zäh geworden oder gar abgestürzt. Meine Testdaten die ich mal versuchsweise ins /tmp kopiert habe waren 2x 22MB groß, dürfte aber keinen Unterschied machen. Ich werde aber heute Abend mal ein wenig genauer testen, da ich diese Woche noch keine Zeit für meine Box hatte.
palace
Erleuchteter
Erleuchteter
Beiträge: 441
Registriert: Dienstag 11. März 2003, 03:42

Beitrag von palace »

So gaaanz 100%ig scheint es in der Tat noch nicht zu laufen...
Die Box lief 2 Tage ordentlich (5MB Swap used).
Eben dachte ich mir, ich probier mal das IDESpeed.sh auf /tmp statt /hdd ;)
Folge: Kompletter Stillstand...
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Beitrag von Rebel1 »

@soli

Da fällt mir gerade noch was ein,
hast du auch ein mkswap /dev/ide/host0/bus0/target0/lun0/part1 gemacht ?

Gruß Rebel1
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Beitrag von Rebel1 »

palace hat geschrieben:So gaaanz 100%ig scheint es in der Tat noch nicht zu laufen...
Die Box lief 2 Tage ordentlich (5MB Swap used).
Eben dachte ich mir, ich probier mal das IDESpeed.sh auf /tmp statt /hdd ;)
Folge: Kompletter Stillstand...
Meinst du dieses Script ?

Code: Alles auswählen

#!/bin/sh 
a=`date +%s` 
time dd if=/dev/zero of=/hdd/test bs=8k count=8192 
z=`date +%s` 
n=`expr $z - $a` 
expr 512000 / $n 
a=`date +%s` 
time dd of=/dev/null if=/hdd/test bs=8k count=8192 
z=`date +%s` 
n=`expr $z - $a` 
expr 512000 / $n 
palace
Erleuchteter
Erleuchteter
Beiträge: 441
Registriert: Dienstag 11. März 2003, 03:42

Beitrag von palace »

@rebel: Ja, halt nur mit /tmp/test ..
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Beitrag von Rebel1 »

Wie groß ist denn dein SWAP,
die Testdatei wird 65536K groß, und du hattest da schon 5MB drin?
palace
Erleuchteter
Erleuchteter
Beiträge: 441
Registriert: Dienstag 11. März 2003, 03:42

Beitrag von palace »

Rebel1 hat geschrieben:Wie groß ist denn dein SWAP,
die Testdatei wird 65536K groß, und du hattest da schon 5MB drin?
1GB (siehe ganz oben - kann ich nix für)
Ferner hab ich den Speedtest für HDD auf 128MB erweitert (count 16384) und das bringt die Box ebenfalls zum verzweifeln.
Manchmal hab ich den Eindruck es wird irgendwas wichtiges ausgelagert (kein Bild mehr, Box läuft aber noch)
Unter "normalen" Bedingungen läuft alles recht ordentlich.
Weiss nur nicht, wass passiert, wenn ich ein Internetupdate mache und /tmp dabei recht fix befüllt wird...
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Beitrag von Rebel1 »

Upps,
ich hatte garnicht registriert das der erste Beitrag von dir war.
Da ich beim Bau meiner Images auf newmake umgestiegen bin und auch für meine Platte das init_ide.sh von Barf benutzt habe, bin ich automatisch von 64MB SWAP ausgegangen,sorry. :oops:

Dann kann ich wohl davon ausgehen das du ein JtG-Image auf der Box hast?
Dann wäre es interressant zu wissen, welche Werte Riker in der pgtable.h verwendet hat, aber leider hat er sich ja hier nicht dazu ausgelassen.
Wenn meine bessere Hälfte heute Abend das Wohnzimmer verlassen hat, werde ich nun endlich mal meine 3,5" Platte gegen eine 2,5"er tauschen und gleich mal ein vergrößertes SWAP mit dem Speedtest-Script quälen und dann berichten.

Gruß,
Rebel1
Zuletzt geändert von Rebel1 am Mittwoch 20. September 2006, 17:11, insgesamt 1-mal geändert.
palace
Erleuchteter
Erleuchteter
Beiträge: 441
Registriert: Dienstag 11. März 2003, 03:42

Beitrag von palace »

Da bin ich ja mal gespannt!!!
Vlt. kannst Du dich mit Riker ja mal austauschen :)
Carjay
Developer
Beiträge: 122
Registriert: Sonntag 23. April 2006, 12:37

Beitrag von Carjay »

Soli hat geschrieben:Wenn ich SWAP aktiviere..und in mein /TMP eine große Datei reinkopiere, zb 27MB dann stürzt die Box so gut wie ab...

Das dürfte doch normalerweise nicht passieren ???
Doch, weil du vermutlich ramfs benutzt, richtig?

Die Swap-Datei wird nämlich nur bei tmpfs verwendet.

Siehe:

Code: Alles auswählen

# mount
[...]
tmpfs on /tmp type tmpfs (rw)

# free
              total         used         free       shared      buffers
  Mem:        29748        28656         1092            0            0
 Swap:       971924       122060       849864
Total:      1001672       150716       850956

# ls -al /tmp
drwxrwxrwt    2 root     root           60 Sep 20 18:15 .
drwxr-xr-x   24 1003     100           792 Sep 20  2006 ..
-rw-r--r--    1 root     root    140353536 Sep 20 18:25 bigfile
T-Nec
Einsteiger
Einsteiger
Beiträge: 207
Registriert: Montag 9. Januar 2006, 13:54

Beitrag von T-Nec »

Frage: würde es was bringen swap aud die SD-Karte zu lenken?
Ich denke mal die ist zu lahm dafür, oder?
palace
Erleuchteter
Erleuchteter
Beiträge: 441
Registriert: Dienstag 11. März 2003, 03:42

Beitrag von palace »

@Carjay: Verdammt!!! Jo, is ramfs - im JTG jedefalls...
Meinte glesen zu haben, das wäre mitgeändert worden... Mist.
Damit könnte man echt mal RAM sparen ramfs -> tmpfs
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Beitrag von Rebel1 »

Hi,
jetzt weiss ich auch warum das bei mir, aber bei euch nicht ordentlich funktioniert.
Ich habe in meinem Image schon auf TMPFS umgestellt. :gruebel:
Ich denke das wird dann auch euer Problem sein, hab zwar noch nicht die andere Festplatte mit größerem SWAP drin (meine Frau belagert noch meine Box :D ), hab aber mal testweise meine vorhandene SWAP bis zum Anschlag mit Daten befeuert. Ich habe hier keinerlei Probleme mit Abrüchen, Hängern oder sonstwas. Das IDESpeed-Script läuft auch problemlos im /tmp . Bei mir laufen die Werte aus Carjay es 2.6er Diff bisher völlig einwandfrei.

Gruß,
Rebel1
T-Nec
Einsteiger
Einsteiger
Beiträge: 207
Registriert: Montag 9. Januar 2006, 13:54

Beitrag von T-Nec »

Frage nochmal: SWAP auf SD statt auf IDE ...
Würde das was bringen ????
Günther
Developer
Beiträge: 587
Registriert: Freitag 9. September 2005, 21:48

Beitrag von Günther »

Übertragungsrate SD-Karte 150-300 KB/s bei 100 % Prozessorlast, das ist bestimmt nicht das, wonach Du suchst ....

Günther
JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

Beitrag von JtG-Riker »

Kommt auch :) eins nach dem anderen :)

im nächsten snap ist dann tmpfs drin statt ramfs :)

Gruß Riker
pOo
Einsteiger
Einsteiger
Beiträge: 144
Registriert: Sonntag 6. August 2006, 11:16

Beitrag von pOo »

mal eine frage: wo sieht man, welche programme im swap laufen?

top macht in der auflistung der programme keine unterscheidung, oder?

mein swap wird naehmlich so gut wie gar nicht genutzt ;)

Code: Alles auswählen

CPU states:   4.1% user,  13.2% system,   0.0% nice,  82.7% idle
Mem:     30704K total,    28900K used,     1804K free,     2112K buffers
Swap:  1028148K total,      144K used,  1028004K free,    11660K cached
Soli
Interessierter
Interessierter
Beiträge: 44
Registriert: Montag 5. Mai 2003, 08:44

Beitrag von Soli »

Hi,

danke tmpfs statt ramfs dann klappts auch mit SWAP !!!

danke

wichtig ist nur, die nutzbare größe in die fstab einzutragen. Sonst ists nur 15MB. Wenn die Swap Partition 64MB gross ist...

tmpfs /tmp tmpfs size=64M 0 0