Ο πυρήνας του Linux δεν μπορεί να χειριστεί με χάρη καταστάσεις εκτός μνήμης

Στη λίστα αλληλογραφίας για προγραμματιστές πυρήνα Linux ανυψώθηκε Πρόβλημα με τον χειρισμό της κατάστασης χαμηλής μνήμης στο Linux:

Υπάρχει ένα γνωστό ζήτημα που ταλαιπωρεί πολλούς ανθρώπους εδώ και πολλά χρόνια και μπορεί να αναπαραχθεί σε λιγότερο από λίγα λεπτά στον πιο πρόσφατο πυρήνα Linux 5.2.6. Όλες οι παράμετροι του πυρήνα έχουν οριστεί σε προεπιλεγμένες τιμές.

Βήματα:

  • Εκκίνηση με την παράμετρο “mem=4G”.
  • Απενεργοποιήστε την υποστήριξη swap (sudo swapoff -a).
  • Εκκινούμε οποιοδήποτε πρόγραμμα περιήγησης ιστού, για παράδειγμα, Chrome/Chromium ή/και Firefox.
  • Αρχίζουμε να ανοίγουμε καρτέλες με τοποθεσίες και παρακολουθούμε πώς μειώνεται η ποσότητα της ελεύθερης μνήμης.

Μόλις προκύψει μια κατάσταση όπου μια νέα καρτέλα απαιτεί περισσότερη μνήμη RAM από αυτή που είναι διαθέσιμη, το σύστημα παγώνει σχεδόν εντελώς. Θα δυσκολευτείτε ακόμη και να μετακινήσετε τον κέρσορα του ποντικιού. Η ένδειξη του σκληρού δίσκου θα αναβοσβήνει ασταμάτητα (δεν ξέρω γιατί). Δεν θα μπορείτε να εκκινήσετε νέες εφαρμογές ή να κλείσετε τις τρέχουσες εφαρμογές.

Αυτή η μικρή κρίση μπορεί να διαρκέσει λίγα λεπτά ή και περισσότερο. Υποθέτω ότι το σύστημα δεν πρέπει να συμπεριφέρεται έτσι. Νομίζω ότι κάτι πρέπει να γίνει για να αποφευχθούν τέτοια «παγώματα».

Είμαι σχεδόν βέβαιος ότι είναι δυνατό να αλλάξουμε ορισμένες παραμέτρους sysctl για να αποφύγουμε τέτοιες καταστάσεις, αλλά κάτι μου λέει ότι αυτό θα μπορούσε να είναι η προεπιλογή για όλους, επειδή οι μη τεχνικοί χρήστες που αντιμετωπίζουν αυτό το πρόβλημα απλά θα σταματήσουν να χρησιμοποιούν το Linux και δεν θα φροντίδα. προκειμένου να αναζητήσετε λύσεις στο Google.

В σχόλια στο Reddit, ορισμένοι χρήστες προτείνουν την ενεργοποίηση της ανταλλαγής, αλλά αυτό δεν λύνει το πρόβλημα, απλώς το αναβάλλει και συχνά το κάνει χειρότερο. Ως πιθανή λύση στο μέλλον, ενδέχεται να εμπλέκονται τα εμφανιζόμενα στον πυρήνα 4.20 και βελτιώθηκε στον πυρήνα 5.2 Υποσύστημα PSI (Pressure Stall Information), το οποίο σας επιτρέπει να αναλύετε πληροφορίες σχετικά με το χρόνο αναμονής για τη λήψη διαφόρων πόρων (CPU, μνήμη, I/O). Αυτό το υποσύστημα καθιστά δυνατή την οργάνωση της παρακολούθησης των ελλείψεων μνήμης σε πρώιμο στάδιο, τον προσδιορισμό της πηγής προβλημάτων και τον τερματισμό ασήμαντων εφαρμογών χωρίς να προκαλείται ορατά αποτελέσματα στον χρήστη.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο