PDA

View Full Version : Problema della memoria virtuale


Cait Sith
15-12-2006, 12:11
Sto usando Matlab (un programma di calcolo scientifico) e ho bisogno di allocare almeno 2 GB di memoria per dei vettori, il problema è che il programma mi va in "Out of Memory" ovvero termina la memoria a disposizione. L'help dice di aumentare la memoria virtuale del computer. Ed è quello che ho fatto, ho impostato come memoria virtuale minima-massima 4096MB-4096MB per andare sul sicuro. Solo che quando la memoria occupata raggiunge gli 1.1 GB circa il programma si blocca.
http://img510.imageshack.us/img510/4461/immagineod1.png
Nell'immagine si vede che appena lancio il programma la memoria aumenta a 1.1 Gb rimane lì un po' (sento scrivere su disco) ma poi matlab dà l'errore e la memoria occupata viene liberata.
Perchè non mi riesce a usare tutta la memoria virtuale che ho impostato?
Forse c'è un limite di memoria per una singola applicazione?

P.S. In questo pc ho 512 MB di memoria fisica.

ciccio13
15-12-2006, 17:23
Ma questo programma quanta ram richiede nei requisiti minimi di sistema?

Cait Sith
15-12-2006, 17:28
richiede 512 MB di ram (1 Gb consigliato)

ma anche sul portatile da 1Gb di ram mi aveva dato lo stesso problema

ciccio13
15-12-2006, 17:50
Se ti dà lo stesso problema sul portatile con 1 GB di ram allora non so fino a che punto sia effettivamente un problema di memoria; premetto che la materia in questione per me è arabo :D , ma non potrebbe esserci un errore nei calcoli e quindi causare il crash del programma?
Comunque ti consiglio di provare con una quantità di memoria virtuale inferiore, prova per esempio con 768 MB minima - 2 GB massima.

Cait Sith
15-12-2006, 18:50
il codice che ho scritto non dovrebbe avere bachi perchè quando lo faccio girare con una minore mole di dati funziona correttamente
inoltre l'errore me lo dà proprio quando viene allocato il secondo vettore con un comando standard

potrebbe essere un problema di matlab, ma mi sembra strano perchè, essendo un programma di calcolo scientifico, non dovrebbe aver problemi a gestire GB di dati

jstef
15-12-2006, 18:54
richiede 512 MB di ram (1 Gb consigliato)

ma anche sul portatile da 1Gb di ram mi aveva dato lo stesso problemaForse il programma non riesce ad utilizzare più di 1gb di memoria che non sia fisica, boh? Prova a verificare magari che il paging file non sia frammentato (cancellalo, pulisci e deframmenta il disco e ricrealo, se la situazione fa schifo crealo su un'altra partizione, sarebbe meglio un altro disco altrimenti le prestazioni son scarsine)

Consulta il supporto/forum del prodotto.

Cait Sith
15-12-2006, 21:25
ho provato a consultare l'help sul sito
32-Bit Architectures

Most computer platforms today are 32-bit architectures, meaning that the length of a pointer or the size of a processor instruction can be at most 32 bits long. This limitation on the sizes of pointers implies that the memory addresses can be a maximum of 32 bits long, which results in a maximum of power(2,32) possible memory addresses. Since modern operating systems are byte addressable, this translates to 4 gigabytes (GB) of addressable memory. Therefore, under 32 bit architectures, the seemingly unlimited virtual memory space is actually limited to approximately 4 GB.

The Windows operating system further reduces the theoretical limit down to 2 GB of virtual memory due to a design decision to reserve the upper 2 GB of address space. On several versions of Windows, this limit can be moved to allow for an extra 1 GB of memory. For more information about this, please refer to Section 2.

Several 32-bit UNIX operating systems also reserve the upper 2 GB of address space, thereby limiting the virtual memory available to 2 GB. If you need to find out exactly how your operating system reserves virtual memory, we suggest you contact the operating system's vendor.

When you launch MATLAB, approximately 0.8 GB of virtual address space is used to load the heap, stack, DLLs, and other operating system services. For Windows, this limits the net available virtual address space to approximately 1.2 GB to store variables and other data needed by MATLAB.

se ho capito bene il comportamento è normale su windows, in quanto limita la memoria virtuale a 2 GB complessivi

ho trovato anche

If you are using a Windows operating system which supports the use of the /3GB switch (e.g., Windows 2000 Advanced Server or Windows 2000 Datacenter Server), it is possible to allocate 3 GB of memory to each process. If you are using MATLAB 7.0 (R14) or later, MATLAB will automatically make use of all of the memory that the operating system gives it. If you are using MATLAB 6.5.1 (R13SP1), a patch is available that allows MATLAB to use more than 2 GB of virtual address space. In order to reduce the amount of virtual memory space reserved by the operating system, use the /3GB switch in your system's boot.ini file. More documentation about how to set this option can be found on the Microsoft Web page.

ma questa famigerata opzione /3 GB non esiste per windows xp?

altrimenti come ultima chance non mi rimangono che le macchine del centro di calcolo dell'università :cry:

jstef
15-12-2006, 22:16
se ho capito bene il comportamento è normale su windows, in quanto limita la memoria virtuale a 2 GB complessiviMhhh non è esattamente così, nel senso che si parla di virtual address space, che è sempre di 4GB, non di memoria virtuale comunemente intesa come file di paging.
Questi 4GB di indirizzamento di memoria sono ripartiti al 50% tra applicazioni e kernel, a meno che non specifichi lo switch /3G che cambia il rapporto in 3:1.
Si può indicare anche in XP pro, puoi provare ma mi lascia perplesso il fatto che l'applicazione non riesca a utilizzare più di 1GB. Hai considerato un upgrade alla release superiore? Secondo il doc avrebbe una gestione più avanzata della memoria...

jstef
15-12-2006, 22:26
Aspetta aspetta, mi era sfuggito:
When you launch MATLAB, approximately 0.8 GB of virtual address space is used to load the heap, stack, DLLs, and other operating system services. For Windows, this limits the net available virtual address space to approximately 1.2 GB to store variables and other data needed by MATLAB.
Vedi che il software usa .8GB per le sue librerie, lo stack e palle varie, quindi restano giusto quei 1.2GB per l'elaborazione del tuo codice, che evidentemente non bastano. Per cui tutto sommato hanno ragione. Ovvio, dato che il software l'hanno fatto loro ;) diciamo che non avevo capito :).
Vedi se riesci a far partire XP con /3gb senza avere casini con qualche driver...assicurati di avere il SP2 e tutte le patch di sistema aggiornate.
E compra un po' di ram ;)

Cait Sith
15-12-2006, 23:15
ho provato ad aggiugnere l'opzione /3GB nel boot.ini, ma credo il pc mi va in crash, forse per i driver video visto che la schermata di crash invece di essere blu è verde :eek:
dopo vari tentativi sono riuscito a farlo aprtire con la modalità avvio registrato o qualcosa del genere
però non so se vale la pena rischiare anche sul portatile
a questo punto credo che ripiegherò sulle workstation dell'università che dovrebbero lavorare a 64 bit

jstef
16-12-2006, 00:01
ho provato ad aggiugnere l'opzione /3GB nel boot.ini, ma credo il pc mi va in crash, forse per i driver video visto che la schermata di crash invece di essere blu è verde :eek: ahahahah :)
Può essere... prova con xp a 64 bit, io non lo conosco e adesso non ho voglia di documentarmi ma potrebbe risolverti qualche problema.
Buonanotte :)