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