Welche Stacksize bei 512 MBytes RAM?

Gast #4000721
Lesenswert?

Hi,

ich habe auf einem BeagleBone Black eine bare-metal Applikation laufen, 
bei der das Speicherlayout bisher so ausgelegt war, dass von den 512 
MBytes RAM satte 128 MBytes für den Stack vergeben waren.

Da das völlig übertrieben ist, würde ich das jetzt ändern, bin mir nur 
nicht sicher, wie viel Platz ich für den Stack vorsehen sollte. Nur mal 
so als grobe Hausnummer: sind 10 MBytes ausreichend?

Die Software selber macht keinen Mist, bei dem irgendwelche 
Riesenstrukturen an Funktionen übergeben werden, es wird alles brav 
gepointert.

Danke!
#4002052
Lesenswert?

Wenn du keine Ahnung hast, dann beschaffe dir welche. ;-) Konkret: Miss 
doch einfach mal nach, was deine Anwendung an Stack braucht.

Dazu den RAM vor dem Start mit 0xD00FC0DE initialisieren, die maximale 
Heap-Ausdehnung merken und irgendwann mal gucken, wo das Muster wieder 
aufhört.

Eine andere Möglichkeit wäre, die MMU zu missbrauchen, wenn das bei der 
Anwendung geht. Also einfach eine Page vom Stack nicht in den Prozess 
mappen und erst vom PageFault-Handler bestücken lassen. Irgendwann 
kannst du dann nachschauen, bis wo (von oben) RAM gemappt ist - dort ist 
der Stack Pointer dann mal vorbeigekommen.

Noch besser wäre, wenn du einfach den Stack "unendlich groß" machen 
kannst, und den Heap auch. Wenn dann der Stack in den Heap wächst oder 
umgekehrt, dann weißt du, dass der RAM voll ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren