เรียนรู้วิธีการจัดตารางเวลาที่คำนึงถึงพลังงาน เพื่อให้อุปกรณ์ที่ใช้พลังงานเป็นช่วงๆ สามารถใช้งานได้นานขึ้นต่อการชาร์จหนึ่งครั้ง
Power-Aware Task Scheduling คือ การจัดลำดับงานของระบบคอมพิวเตอร์ โดยคำนึงถึงพลังงานที่มีอยู่ เหมาะกับอุปกรณ์ IoT และระบบ intermittent computing ที่พลังงานมาเป็นช่วง ๆ เทคนิคนี้ช่วยให้ระบบเลือกทำงานตามความเหมาะสมของพลังงาน ลดการดับกลางงาน และยืดอายุการทำงานของอุปกรณ์ โดยใช้แนวคิดอย่างการประเมินพลังงาน ของงาน การแบ่งงานเป็นส่วนเล็ก และการบันทึกสถานะงาน เพื่อใช้พลังงานอย่างคุ้มค่าที่สุด
ลองจินตนาการถึงอุปกรณ์เล็กๆ ที่ฝังอยู่ในป่าทำหน้าที่วัดอุณหภูมิของดินทุกวัน หรือ เซนเซอร์ที่ติดอยู่บนสะพานเพื่อตรวจจับการสั่นสะเทือนของโครงสร้าง อุปกรณ์พวกนี้ไม่มีปลั๊กไฟ ให้เสียบ และไม่มีแบตเตอรี่ก้อนใหญ่ให้ใช้งาน แล้วเพื่อนๆ สงสัยกันหรือไม่ว่า เครื่องมือเอา พลังงานจากไหนมาใช้ คำตอบ คือ แสงอาทิตย์นั่นเอง บางตัวก็ใช้การสั่นสะเทือน หรือ คลื่นวิทยุ รอบตัว สิ่งเหล่านี้คือโลกของ Intermittent Computing หรือ การประมวลผลแบบไม่ต่อเนื่อง คำว่าไม่ต่อเนื่องนี้หมายถึงอุปกรณ์ที่ไม่ได้มีพลังงานใช้งานตลอดเวลา บางช่วงมีไฟ บางช่วง ไฟหมด ระบบเลยต้องคอยหลับๆ ตื่นๆ อยู่ตลอดเวลา เหมือนมือถือที่แบตใกล้หมดแล้วเปิดติด ๆ ดับ ๆ นั่นเอง
ปัญหาที่ตามมาคือ ถ้าไฟดับระหว่างที่กำลังคำนวณอยู่ ข้อมูลจะหาย งานที่กำลังทำ อาจจะต้องเริ่มใหม่ทั้งหมด และพลังงานที่เสียไปก่อนหน้าก็สูญเปล่า พวกนักวิจัยเลยเริ่มตั้งคำถาม สำคัญว่า เราจะทำให้คอมพิวเตอร์ที่มีพลังงานจำกัด สามารถทำงานได้นานได้อย่างไร และหนึ่งใน คำตอบก็คือ แนวคิดที่เรียกว่า Power-Aware Task Scheduling หรือ การจัดลำดับงาน โดยคำนึง ถึงพลังงานที่มีอยู่ แนวคิดนี้ไม่ได้เป็นเพียงเทคนิคเล็ก ๆ ในระบบปฏิบัติการ แต่มันเปลี่ยนวิธีคิด เกี่ยวกับการทำงานของคอมพิวเตอร์ทั้งระบบ เพราะแทนที่จะถามว่างานไหนสำคัญที่สุด เปลี่ยนเป็นการถามว่า ตอนนี้เรามีพลังงานพอจะทำอะไรได้บ้างแทน และคำถามนี้เองที่เป็น จุดเริ่มต้นของเรื่องราวทั้งหมด
ในคอมพิวเตอร์ทั่วไป ระบบปฏิบัติการจะมีตัวที่เรียกว่า scheduler ที่ทำหน้าที่จัดคิวงานว่า โปรแกรมไหนจะได้ใช้ CPU ก่อน หรือ หลัง แต่ในอุปกรณ์ IoT หรือ embedded system ที่พลังงานจำกัดมาก scheduler จะมีหน้าที่เกี่ยวกับพลังงานเพิ่มเข้ามาด้วย เพราะงานแต่ละ อย่างใช้พลังงานไม่เท่ากันเลยเช่น การอ่านค่าจากเซนเซอร์อุณหภูมิ ใช้พลังงานนิดเดียว แต่การ ประมวลผลข้อมูล ใช้พลังงานมากขึ้นหน่อย และการส่งข้อมูลผ่าน Wi-Fi หรือ Bluetooth จะกินพลังงาน ซึ่งบางครั้งการส่งข้อมูลครั้งเดียวอาจใช้พลังงานมากกว่าการคำนวณหลายพัน คำสั่งรวมกัน และถ้าระบบไม่คิดเรื่องนี้ให้ดี ปัญหาจะเกิดทันที
สมมติระบบมีพลังงานพอที่จะอ่านเซนเซอร์ วิเคราะห์ข้อมูล แล้วค่อยส่งข้อมูล
แต่ scheduler ดันเลือกส่งข้อมูลก่อนทั้งหมด พลังงานก็จะหมดกลางทาง การส่งก็จะล้มเหลว และข้อมูลที่อ่านมาได้ก็เสียเปล่า เหมือนเรามีเงินเหลือ 40 บาท แต่ดันซื้อของเล่นแพงๆ ก่อน สุดท้ายก็ไม่เหลือเงินซื้อข้าวที่เป็นของจำเป็นจริงๆ เจ้า Power-Aware Scheduling เลยทำหน้าที่ เหมือนนักวางแผนการใช้พลังงาน มันจะคิดประมาณว่า ตอนนี้พลังงานที่เหลืออยู่ทำอะไรได้บ้าง งานไหนควรทำก่อน งานไหนควรรอไปก่อน บางครั้งระบบอาจเลือกทำแต่งานเล็ก ๆ ก่อน แล้วค่อย สะสมพลังงานไว้ทำงานใหญ่ทีหลัง ถึงการตัดสินใจพวกนี้จะฟังดูเหมือนเรื่องง่าย ๆ แต่สำหรับ คอมพิวเตอร์ขนาดจิ๋วเล็กที่มีพลังงานแค่ไม่กี่มิลลิจูล สิ่งนี้เป็นการตัดสินใจที่ยิ่งใหญ่มาก
สิ่งที่ทำให้ intermittent computing น่าสนใจและท้าทายก็คือ พลังงานไม่ได้มาอย่าง สม่ำเสมอตลอดเวลา พูดให้เห็นภาพง่ายๆ ให้ลองนึกถึงเซนเซอร์ที่ใช้พลังงานจากแผงโซลาร์เซลล์ เล็ก ๆ ถ้าเป็นในช่วงกลางวันที่แดดแรง พลังงานก็จะไหลเข้ามาเรื่อย ๆ แต่พอเมฆบัง หรือ เข้าสู่ช่วง กลางคืน พลังงานก็แทบจะไม่มีเลย หรือ บางอุปกรณ์อาจเก็บพลังงานจากการสั่นสะเทือนของ เครื่องจักร เมื่อเครื่องจักรทำงาน พลังงานก็เข้ามา แต่พอเครื่องหยุด พลังงานก็หยุดตามไปด้วย ตอนที่ได้พลังงานมา พลังงานที่เก็บมาได้จะถูกสะสมไว้ใน capacitor ซึ่งเป็นตัวเก็บพลังงานขนาด เล็ก และเมื่อพลังงานสะสมถึงระดับหนึ่ง ระบบก็จะเริ่มเปิดขึ้นมาและเริ่มทำงาน แต่เพราะพลังงาน มีจำกัด เครื่องเลยจะทำงานได้แค่ช่วงสั้น ๆ ก่อนจะดับลงอีกครั้ง สิ่งที่นักพัฒนาต้องระวังคือ ถ้าระบบไม่ได้ถูกออกแบบมาให้รองรับสถานการณ์แบบนี้ ทุกครั้งที่เครื่องเปิดขึ้นมาใหม่ มันอาจ เริ่มทำงานเดิมตั้งแต่ต้น
ลองนึกภาพว่า ระบบกำลังประมวลผลข้อมูลก้อนใหญ่ ทำไปเกือบเสร็จ แต่ไฟดับก่อนจบ พอเครื่องเปิดใหม่ แล้วต้องเริ่มจากศูนย์อีกครั้ง พลังงานที่ใช้ไปก่อนหน้านี้จึงสูญเปล่าไปหมด เจ้า Power-Aware Task Scheduling เลยเข้ามาช่วยพยายามจัดลำดับงานให้เหมาะกับช่วงเวลา ที่ระบบมีพลังงานเช่น ถ้าพลังงานยังมีไม่มาก ระบบอาจเลือกทำงานสั้น ๆ ก่อน เพื่อหลีกเลี่ยงการ ดับกลางงาน บางทีก็ยังสามารถประมาณได้คร่าว ๆ ว่า พลังงานที่เหลืออยู่สามารถให้ CPU ทำงาน ได้อีกประมาณกี่คำสั่ง ก่อนที่เครื่องจะดับ ข้อมูลเล็ก ๆ แค่นี้ จิ๋วแต่แจ๋วพราะมันช่วยให้ระบบตัดสิน ใจได้ดีขึ้น
เพื่อให้ระบบทำงานได้ดี นักวิจัยได้คิดเทคนิคหลายอย่างขึ้นมา ประการแรกคือ การคำนวณว่า งานแต่ละอย่างใช้พลังงานประมาณเท่าไหร่ เพราะเมื่อระบบรู้พลังงานแต่ละงาน ที่ต้องจ่ายก็จะทำให้เลือกงานที่เหมาะกับพลังงานที่มีอยู่ในตอนนั้นได้ หรือ อีกแนวคิดหนึ่ง คือ การแบ่งงานใหญ่ให้เป็นงานเล็กก่อน เพราะการทำงานใหญ่ในครั้งเดียวต้องใช้พลังงานเยอะ ระบบจึงแบ่งขั้นตอนออกเป็นหลายช่วง หากพลังงานเกิดหมดตรงกลางทาง ก็แค่หยุดไว้ แล้วทำต่อรอบหน้า นอกจากนี้ยังมีอีกเทคนิคหนึ่งที่สำคัญมากคือ checkpointing การคอยบันทึกสถานะของระบบเป็นระยะระหว่างทำงาน ถ้าไฟดับกระทันหัน เมื่อไฟกลับมาแล้ว เครื่องเปิดใหม่ ระบบก็จะสามารถกลับมาทำต่อจากจุดที่บันทึกไว้ได้ โดยที่ไม่ต้องง้อการเริ่มใหม่ ทั้งหมด ถ้าพูดง่าย ๆ ก็เหมือนเกมที่มีจุดเซฟเวลา เราเล่นไปไกลแล้วแพ้ เราก็ไม่ต้องเริ่ม ด่านแรกใหม่ แค่โหลดจากจุดเซฟล่าสุดก็สามารถเข้าไปเล่นจุดเดิมต่อได้ เจ้าระบบคอมพิวเตอร์นี้ ก็ใช้แนวคิดเดียวกัน การใช้เทคนิคเล็ก ๆ พวกนี้เองจะช่วยลดการเสียพลังงานในการกลับไป เริ่มทำงานเดิมใหม่
จนถึงตอนนี้เจ้า Power-Aware Task Scheduling ที่เราคุยกันมาทั้งหมด ส่วนใหญ่คือ การดูว่า ตอนนี้มีพลังงานเหลือเท่าไหร่ แล้วค่อยตัดสินใจว่าจะทำงานอะไรต่อ แต่ในโลกของการวิจัย แน่นอนว่าพวกนักวิทยาศาสตร์เริ่มคิดไปไกลกว่านั้น พวกเขาเริ่มตั้ง คำถามว่า ถ้าอุปกรณ์สามารถเดาอนาคตของพลังงานได้จะดีแค่ไหนกันนะเช่น ในเซนเซอร์ที่ใช้ พลังงานจากแสงอาทิตย์ ถ้าระบบรู้ว่าตอนนี้เป็นช่วงเช้า และอีกไม่นานแดดจะเริ่มแรงขึ้น มันอาจตัดสินใจว่า ตอนนี้ควรจะเริ่มเก็บพลังงานไว้ก่อน เดี๋ยวอีกชั่วโมงค่อยทำงานหนัก ในทางกลับกัน ถ้าระบบรู้ว่าใกล้จะค่ำแล้ว และพลังงานจะเริ่มลดลงแน่ๆ เพราะแดดหาย มันก็จะรีบ สั่งให้ทำงานสำคัญให้เสร็จก่อน แนวคิดนี้เรียกว่า Energy Prediction นั่นเอง กล่าวคือ ให้ระบบพยายามคาดเดาว่า พลังงานในอนาคตเป็นยังไง บางระบบที่อาศัยข้อมูลสถิติ เช่น ถ้าเป็นตอนเที่ยง พลังงานจากแสงแดดมักจะสูง ถ้าเป็นตอนกลางคืน พลังงานมักจะต่ำ หรือ บางระบบล้ำกว่านั้นอีก มันจะใช้ machine learning มาช่วยวิเคราะห์รูปแบบพลังงาน ที่เกิดขึ้นในสภาพแวดล้อมจริงๆ เช่น ถ้าอุปกรณ์ติดอยู่กับเครื่องจักรในโรงงาน มันจะเรียนรู้ว่า เครื่องจักรจะเริ่มทำงานตอน 9 โมงเช้าเป็นประจำ และหยุดตอน 5 โมงเย็น และเมื่อมันรู้รูปแบบ แบบนี้ ระบบก็สามารถวางแผนการทำงานได้ดีขึ้น คือ มันอาจเลือกทำงานหนักในช่วงที่เดาว่า จะมีพลังงานมาก และพักในช่วงที่พลังงานน้อยนั่นเอง
ทุกวันนี้โลกกำลังมีอุปกรณ์ IoT เพิ่มมากขึ้นเรื่อย ๆ เช่น เซนเซอร์ในฟาร์มที่ช่วยดูแลผัก ผลไม้ หรือ เซนเซอร์บนสะพานที่คอยตรวจความปลอดภัยของโครงสร้าง โดยที่พวกอุปกรณ์ เหล่านี้อาจมีเป็นพัน หรือ เป็นหมื่นตัวในพื้นที่เดียว รวมถึงอาจจะถูกติดตั้งในที่ที่เข้าถึงยากมากเช่น กลางป่า ใต้สะพาน บนภูเขา ถ้าแบตหมดแล้วต้องเดินไปเปลี่ยนทุกตัวแทบจะเป็นไปไม่ได้เลย เพราะแบบนี้ นักวิจัยเลยพยายามทำให้อุปกรณ์เหล่านี้ใช้พลังงานน้อยที่สุด และอยู่ได้นานที่สุด
จนกลายเป็นเทคโนโลยี Power-Aware Task Scheduling ที่ช่วยให้อุปกรณ์เล็ก ๆ สามารถคิด ได้ว่า ควรใช้พลังงานกับอะไร ควรเก็บพลังงานไว้ตอนไหน และควรหยุดทำงานเมื่อไร ถ้ามองให้ กว้างขึ้น แนวคิดนี้ไม่ได้เป็นแค่เรื่องของคอมพิวเตอร์ แต่มันคือเรื่องการใช้ทรัพยากรอย่างชาญ ฉลาดในโลกที่พลังงานและทรัพยากรมีจำกัด รู้ว่าเมื่อไหร่ควรใช้ และเมื่อไหร่ควรเก็บไว้ เพราะเทคโนโลยีที่จะมาเปลี่ยนโลก อาจไม่ใช่เครื่องที่แรงที่สุด หรือ ใช้พลังงานมากที่สุด แต่มันคือระบบเล็ก ๆ ที่รู้จักใช้พลังงานให้คุ้มค่าที่สุด