ubuntuusers.de

Problem mit "Pi"

Status: Ungelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

yoyoh

Avatar von yoyoh

Anmeldungsdatum:
8. September 2009

Beiträge: 32

Guten Morgen! Ich verwende das Paket "Pi", um auf der Kommandozeile Pi ein wenig zu berechnen. Einstellige Millionenbeträge gehen in Sekundenschnelle, aber bei größeren Mengen von Nachkommastellen wie einer Milliarde rechnet der Computer zwar lange vor sich hin, aber nur um mir das Ergebnis zu präsentieren, dass die Berechnung abgebrochen wurde und es an virtuellen Speicher fehle. Mein PC hat aufgrund von dem 32Bit OS etwa 3,2 GB RAM, und ich dachte, mit "virtuellem Speicher" wäre die Swap-Auslagerung gemeint. Mit GParted, swapoff, mkswap und swapon habe ich diese dann auf gute 60 GB erweitert, was ja eigentlich reichen müsste. Dennoch brach die Berechnung weiterhin ab. Was mache ich falsch?

Edit: hier die genaue Fehlermeldung bei "pi 10000000000" : terminate called after throwing an instance of 'cln::runtime_exception' what(): Out of virtual memory. Aborted

Onli Team-Icon

Ehemalige
Avatar von Onli

Anmeldungsdatum:
1. August 2005

Beiträge: 6941

Mit virtuellem Speicher ist wohl eher virtueller Speicher gemeint. Der dürfte bei deinem 32-Bit-System auf 4GB pro Prozess beschränkt sein.
Gruß

yoyoh

(Themenstarter)
Avatar von yoyoh

Anmeldungsdatum:
8. September 2009

Beiträge: 32

hm, ok, und wie kann ich diese problem umgehen? ich dachte, prozesse, denen der speicher knapp wird würden eben auslagern.

Kinch

Anmeldungsdatum:
6. Oktober 2007

Beiträge: 1261

yoyoh schrieb:

hm, ok, und wie kann ich diese problem umgehen? ich dachte, prozesse, denen der speicher knapp wird würden eben auslagern.

Der virtuelle Speicher ist bei 32-Bit meistens auf etwas um die 3 GB beschränkt. Daran ändert auch swappen nichts. Denn es swapt nicht der Prozess, sondern das Betriebsystem, wenn der „physikalische Speicher” knapp wird.

Um trotz virtueller Arbeitsspeicher Beschränkung weiter rechnen zu können, muss das Programm explizit so geschrieben sein um auch andere Speicherquellen (Festplatte zum Beispiel) zu benutzen. Anscheinend tut „pi“ das nicht. Sowas ist auch vergleichsweise aufwändig zu programmieren.

NoKurth

Avatar von NoKurth

Anmeldungsdatum:
18. August 2006

Beiträge: 430

Hallo,

hier mal einige Größenangaben, die bei der Berechnung von pi auftreten können: Pi-Berechnungsrekord auf handelsüblichem PC

Gruß Norman

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Es gibt noch einen bigmem Kernel, zumindest unter Debian. Den kannst du installieren indem du das Packet "linux-image-2.6-686-bigmem" installierst (zumindest unter Debian).

Der ist dafür gedacht wenn du mehr als 4GiB Hauptspeicher hast. Allerdiengs weiß ich nicht ob sich dadurch auch der virtuelle Speicher pro Prozess erhöht. Ich denke schon fast eher das es das nicht tut, aber du kannst es ja einfach mal selber ausprobieren.

Mit GParted, swapoff, mkswap und swapon habe ich diese dann auf gute 60 GB erweitert, was ja eigentlich reichen müsste.

Für Linux ist übrigens alles eine Datei (naja so fast). Das bedeutet übrigens auch das man einfach eine Datei erstellen kann die mit mkswap formatieren kann und mit swapon einbinden kann. Ist zumindest kein Grund gleich eine komplette Partitonierung mit gparted umzuändern wenn man mal etwas "testen" will oder kurzzeitig mehr swap braucht. Vielleicht ist dir das ja noch nicht bekannt.

Yoschi

Anmeldungsdatum:
11. April 2009

Beiträge: 454

Der bigmem Kernel heißt in Ubuntu "pae". Der kann bis zu 64 GB Arbeitsspeicher adressieren.

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

PAE erweitert nur die Adressierung des physischen Speichers. Der virtuelle Adressraum eines Prozesses ist trotzdem auf 4 GB beschränkt. Dem System steht lediglich mehr als 4 GB physischer Speicher zur Verfügung, um die Speicher-Seiten einzelner Prozesse unterzubringen.

Antworten |