From:Andries Brouwer
To:Thomas Habets
Subject:Re: [PATCH] oom_pardon, aka don't kill my xlock
Date:Fri, 24 Sep 2004 01:45:20 +0200
Cc:linux-kernel-AT-vger.kernel.org

Linux-ის ბირთვის განვითარების პროცესში ახალი ინიციატივა გამოჩნდა, რომელიც მიზნად ისახავს ოპერატიული მეხსიერების მართვის გაუმჯობესებას. პროექტი, სახელწოდებით OOM_pardon, დეველოპერებს საშუალებას მისცემს, სისტემისთვის მიუთითონ, თუ რომელი პროცესებია „ხელშეუხებელი“.

არსებული სისტემა, რომელიც ცნობილია როგორც Out of Memory (OOM) Killer, შექმნილია იმისთვის, რომ სისტემა სრულად გათიშვისგან იხსნას. როდესაც მეხსიერება კრიტიკულ ზღვარს აღწევს, ბირთვი ავტომატურად წყვეტს იმ პროცესებს, რომლებიც ყველაზე მეტ რესურსს მოიხმარენ. თუმცა, ხშირ შემთხვევაში, ეს პროცესი მომხმარებლისთვის აუცილებელ პროგრამებსაც აზიანებს.

რატომ არის ეს ცვლილება მნიშვნელოვანი?

მომხმარებლების დიდი ნაწილი ხშირად აწყდება პრობლემას, როდესაც სისტემა „კლავს“ ისეთ მნიშვნელოვან აპლიკაციებს, როგორიცაა ეკრანის ბლოკირების პროგრამები (მაგალითად, xlock). შედეგად, მომხმარებელი კარგავს წვდომას სამუშაო გარემოზე ან უწევს მონაცემების დაკარგვის რისკის წინაშე დადგომა.

OOM_pardon-ის დანერგვა სწორედ ამ დილემას მოაგვარებს. დეველოპერებს ექნებათ შესაძლებლობა, კონკრეტულ პროცესებს მიანიჭონ სპეციალური სტატუსი, რაც მათ ოპერატიული მეხსიერების დეფიციტის დროსაც კი შეუნარჩუნებს სიცოცხლისუნარიანობას.

ტექნიკური დეტალები და გამოწვევები

მიუხედავად ერთი შეხედვით მარტივი იდეისა, ბირთვის დონეზე მსგავსი ცვლილებების შეტანა სიფრთხილეს მოითხოვს. ბირთვის მთავარი ამოცანა სისტემის სტაბილურობის შენარჩუნებაა. თუ ძალიან ბევრ პროცესს მიენიჭება „პატიების“ (pardon) სტატუსი, ოპერატიული მეხსიერების ამოწურვის შემთხვევაში სისტემამ შესაძლოა ვეღარ შეძლოს კრიტიკული რესურსების გათავისუფლება, რაც გამოიწვევს სისტემის სრულ გაყინვას (kernel panic).

ამჟამად მიმდინარეობს დისკუსია იმის შესახებ, თუ რა შეზღუდვები უნდა დაუწესდეს ამ მექანიზმს. საზოგადოება აქტიურად განიხილავს იმას, თუ როგორ უნდა დარეგულირდეს პრიორიტეტები ისე, რომ დაცული იყოს როგორც მომხმარებლის გამოცდილება, ისე სისტემის საერთო ჯანმრთელობა.

Linux-ის საზოგადოება ელოდება შემდგომ პატჩებს, რომლებიც დააზუსტებს, თუ როგორ მოხდება ამ ფუნქციის ინტეგრაცია ბირთვის ძირითად ვერსიებში. თუ ტესტირება წარმატებით დასრულდება, ეს გახდება მნიშვნელოვანი ნაბიჯი უფრო მოქნილი და ჭკვიანი ოპერაციული სისტემებისკენ.