จาก : http://forum.xda-developers.com/showthread.php?p=5442369#post5442369

“พวกเราต่างก็รู้ว่า Android ใช้วิธีที่ต่างออกไปในการจัดการ process ซึ่งแทนที่จะ kill ทุกๆ process หลังสิ้นสุดกิจกรรม แต่ระบบ android นั้นจะเก็บรักษา process ไว้จนกว่าระบบจะต้องการหน่วยความจำเพิ่มเติม ซึ่ง process เหล่านี้จะต้องไม่ก่อให้เกิดปัญหาต่อประสิทธิภาพโดยรวมและควรให้ความเร็วที่ดีขึ้นในการเรียกใช้ครั้งต่อไป ทั้งหมดที่กล่าวมานี้คือไอเดียครับ

แต่ปัญหาคือ Android จะ kill process ตอนไหน? และ process ไหนล่ะที่จะถูก kill? เท่าที่ผมได้ทำการศึกษาทำความเข้าใจนั้น เจ้า android จะเก็บรักษารายการ Process ที่ใช้ล่าสุดไว้ และจัดการ kill process ลำดับท้ายๆที่ถูกใช้น้อยที่สุดอออกไป ซึ่งวิธีนี้เป็นวิธีการที่ฉลาดมากกว่า taskkillers ทุกเจ้าที่เราเห็นในตลาด”

แต่ปัญหาก็ยังไม่หมดไปเพราะเจ้า android ได้เก็บ process ไว้มากเกินความจำเป็น ทำให้เหลือ Ram ในระบบน้อยจนทำให้เครื่องช้าอยู่ดี จนเราๆก็ต้องหา Taskiller มาใช้กันใช่มั๊ยครับ

แล้วขอถามว่าเบื่อกันไหมครับ ทำไมต้องมานั่งกด Kill process กันบ่อยๆ?

แต่ปัญหานี้จะหมดไปเมื่อเรามีวิธีการจัดการ Low Memory Killer Levels กันครับ 🙂

——————————————————————————————–

Low Memory Killer Levels หรือ Internal Taskiller นั้นเป็น Kernel source file ที่ชื่อ ” ” (อยู่ใน kernel source tree ใน “drivers/misc/”; หรือไปดู GIT source tree ได้ที่ http://tinyurl.com/lowmemkiller).

ซึ่งระบบการจัดการ Low Memory Killer Levels ของ Android นั้นจะประกอบไปด้วย 6 ส่วนหลักๆคือ

FOREGROUND_APP:
– This is the process running the current foreground app. We’d really rather not kill it! Value set in system/rootdir/init.rc on startup.

VISIBLE_APP:
– This is a process only hosting activities that are visible to the user, so we’d prefer they don’t disappear. Value set in ystem/rootdir/init.rc on startup.

SECONDARY_SERVER:
– This is a process holding a secondary server — killing it will not have much of an impact as far as the user is concerned. Value set in ystem/rootdir/init.rc on startup.

HIDDEN_APP:
– This is a process only hosting activities that are not visible, so it can be killed without any disruption. Value set in system/rootdir/init.rc on startup.

CONTENT_PROVIDER:
– This is a process with a content provider that does not have any clients attached to it. If it did have any clients, its adjustment would be the one for the highest-priority of those processes.

EMPTY_APP:
– This is a process without anything currently running in it. Definitely the first to go! Value set in system/rootdir/init.rc on startup.This value is initalized in the constructor, careful when refering to this static variable externally.

(แปลกันเอาเองนะครับ เพราะลองแปลแล้วรู้สึกแปลกๆ -*- )

ซึ่งถูกกำหนดค่าไว้ดังนี้

1536,2048,4096,5120,5632,6144

ก็คือ 6Mb, 8Mb, 16Mb, 20Mb, 22Mb, 24Mb ตามลำดับ ( Value คูณ 4 หารด้วย 1000)

เป็นค่าที่ถูกกำหนดไว้โดยระบบ ซึ่งถ้า Process ได้ใช้งานหน่วยความจำต่ำกว่าค่าที่กำหนดไว้ ระบบ Low Memory Killer Levels ก็จะจัดการ kill process ลำดับท้ายทันที

ทีนี้เรามากำหนดค่าในส่วนนี้กันครับผม

สิ่งที่ต้องเตรียมก็คือ ต้อง Root เครื่องให้เรียบร้อยก่อนนะครับ

วิธีการกำหนดคือให้เราเข้าไป Config Kernel ได้ที่ “/sys/module/lowmemorykiller/parameters/minfree” ได้เองเลยเช่น

echo “1536,3072,4096,21000,23000,25000” > /sys/module/lowmemorykiller/parameters/minfree

แต่ว่าเรามีวิธีง่ายกว่านั้นครับ!

คือการไป Download App ที่ชื่อ “Minfreemanger” ได้กันฟรีๆเลยที่ Android Market ครับผม 😀

ซึ่งตัว App ก็จะไม่มีอะไรมาก สามารถกำหนดค่าที่ต้องการลงไปแล้ว Apply ได้เลย และถ้าใครยังงงๆ ไม่รู้จะกำหนดค่ายังไงตัว app ก็มี presets 3 แบบมาให้เลือก ก็ลองกันไปได้เลยครับ

แนะนำว่ากำหนดเองดีที่สุด ไม่มีปัญหาแน่นอน แต่ก็อย่ากำหนดเว่อร์เกินไปก็พอ

ผมกำหนดโดยเรียงลำดับจากน้อย > ไปมาก โดยส่วนหลักที่ต้องให้ความสำคัญโดยไม่ควรใส่ค่ามากเกินไป คือ 3 ส่วนแรกครับคือ

FOREGROUND_APP
VISIBLE_APP
SECONDARY_SERVER

และค่ามากที่สุดควรเป็น EMPTY_APP ซึ่งผมกำหนดเป็นค่ามากที่สุดที่ Ram ว่างเหลือของเครื่องเรา เช่น ถ้าปกติ Ram ว่าง 70 Mb ก็ใส่ไปซัก 64 ก็ได้ครับ เครื่องผมใช้ A88 กำหนดไว้ที่ 10, 12, 24, 40, 48, 56 ก็ลื่นดีครับ

เพื่อนๆลองกำหนดกันเองได้เลยครับและลองสังเกตความเปลี่ยนแปลงได้เลย ตอนนี้ผมไม่ต้องใช้ Taskiller ใดๆอีกแล้ว เพราะตอนนี้ลื่นมากกกกดเปิด App เสร็จกดปุ่ม Home กันได้เป็นว่าเล่นเลยครับ:D

แต่ถ้าไม่แน่ใจว่า เอ…เราจะรู้ได้ไงว่าค่าที่เรากำหนดไปแล้วมันไปเปลี่ยนค่าให้จริงไหม ก็ขอแนะนำ App อีกตัวครับ นั่นคือ Android System Info โหลดกันได้ฟรีที่ Market อีกเช่นเคยจ้า แล้วเข้าไปดูในส่วนของ System > Low Memory Killer Levels กันได้เลยว่ามันปรับเปลี่ยนค่าให้เราจริงมั๊ย

สรุปข้อดีในการจัดการ Low Memory Killer Levels ครับ
1. ไม่จำเป็นต้องใช้ Taskiller แล้วครับ
2. Ram เหลือว่างในระบบตลอดเวลา
3. ทำให้เครื่องทำงานได้ไวขึ้น
4. สามารถเปิด App หนักๆเช่นเกมส์ 3D ได้ตลอดเวลาโดยไม่ต้องกังวลว่าจะกระตุกเพราะ Ram หมดครับ (ทดลองเปิด Racing Thunder2, Iron Sight, Super K.O. Boxing2 ตบท้ายไปด้วยการ Test Neocore Benchmark ได้ 34 ครับ โดยที่เครื่องไม่แฮ้งค์ ไม่ดับเลย)

ขอจบ Tips เพียงเท่านี้นะครับเพราะยาวมากแล้ว ผมขอแนะนำว่าลองจัดการกันดูนะครับไม่ว่าจะเป็นเครื่องรุ่นเล็กหรือรุ่นใหญ่ มันช่วยให้เครื่องเร็วขึ้นได้จริงๆครับ ลืมไปได้เลยกับการต้องมากด Taskiller กันครับ 😀

—————

UPDATE!
แนะนำ App อีกตัวครับ “Autokiller” ใช้จัดการ Low Memory Killer Levels เหมือนกัน แต่ดีกว่าครับ! มี Presets ให้เลือกมากกว่า สามารถจัดการและแสดงรายละเอียด Process, Service ได้ ที่สำคัญ Apply at boot ได้แน่นอนครับ! [/size]