Re: Ελεύθερη μνήμη στο σύστημα

d.a.glynos glynos at storm.cs.unipi.gr
Tue May 26 10:08:04 EEST 2009


On Tue, 26 May 2009, myle wrote:
> Γεια σας,
>
> αναρωτιέμαι ποιος είναι ο "καλύτερος" για να δούμε πόση μνήμη είναι 
> ελεύθερη (ram/swap) ώστε αυτό να χρησιμοποιηθεί σε ένα πρόγραμμα C++.

Θέλεις η ελεύθερη μνήμη να αξιοποιηθεί από ένα πρόγραμμα C++ ή να τυπωθεί
π.χ. ως νούμερο σε ένα πρόγραμμα C++;

Αν εννοείς το πρώτο:

Σε πρώτη φάση δε νομίζω ότι θα ήθελες το πρόγραμμα σου να ακουμπήσει
swap... Συνεπώς δες τις mmap(2) + mlock(2).

> Ψάχνοντας για ενναλακτικές, βρέθηκε και η sysinfo(2). Νομίζω πως κάπου 
> είδα πως η sysinfo(2) δεν είναι τόσο αξιόπιστη...

Δεν είναι portable. Επίσης τα freepages που δίνει είναι σελίδες που δεν
έχουν χρησιμοποιηθεί καθόλου (ούτε για caching).

Σε προγράμματα που χρειάζονται μεγάλες ποσότητες pre-allocated μνήμης η 
συνήθης τακτική είναι να ελέγξουν το totalram και να υπολογίσουν από αυτό
ένα μέρος (π.χ. 80%) το οποίο θα δοκιμάσουν να κάνουν mmap. Αν δε πετύχει,
μειώνουν το size μέχρι να πετύχει. Υπόψιν, το size δε μπορεί να γίνει 
μικρότερο από κάποια ποσότητα που έχει αρχικά ορίσει ο προγραμματιστής
(ή ο χρήστης).

Δημήτρης


More information about the Linux-greek-users mailing list