วันพุธที่ 4 มกราคม พ.ศ. 2555

เวลาตอบสนอง (response time)


วันนี้สอนเรื่องเวลาตอบสนอง (response time) ก็เลยอยากเอามาขยายความต่อสักนิดในบล๊อกครับ

response time คือเวลาที่ตั้งแต่ตอนที่อินพุตมาถึงระบบ จนกระทั่งถึงเวลาที่ผลลัพธ์ออกมาจากระบบ
ซึ่งโดยปรกติจะประกอบด้วยเวลาสองส่วน ซึ่งก็คือ เวลาในแถวคอย (queue time) และเวลาในการบริการ (service time)


response time = queue time + service time

ซึ่งการสร้างแบบจำลองเวลาลักษณะนี้สามารถใช้อธิบายได้กว้างขวางในงานประยุกต์ทั่วไป เช่น กรณีการคิดเงินในร้านซูเปอร์มาร์เก็ต สมมติว่าเราซื้อของมาเต็มรถ แล้วต้องการที่จะชำระเงินค่าสินค้า เราก็ต้องเข็นรถมาที่ ช่องเก็บเงิน ซึ่งถ้ามีคนที่เข้าแถวคอยก่อนหน้าเรา เราก็ต้องเริ่มนับเวลาการเข้าคิวตั้งแต่ตรงนั้น จนกระทั่้งแถวคอยสั้นลงเรื่อย จนถึงลำดับของเราในการรับบริการคิดเงิน การวัดเวลาในแถวคอยก็จะหยุดตรงนั้น และตำแหน่งนั้นก็เป็นตำแหน่งเริ่มของเวลาที่ใช้ในการบริการซึ่งจะสิ้นสุดเมื่อทอนตังค์เสร็จ พนักงานยกมือไหว้ลูกค้าแล้วก็แยกย้ายกันไป ทางใครทางมัน

ทีนี้ถ้าเราต้องการลดเวลาการตอบสนอง เราก็ต้องลดเวลาในแถวคอย และ/หรือ เวลาในการบริการ

ถ้าเราอยากลดเวลาในการบริการเราสามารถทำได้โดย
  1. ใช้วิธีการเดิมแต่เพิ่มประสิทธิภาพการทำงาน โดยฝึกหรือบังคับ ให้พนักงานทำงานเร็วขึ้น เช่น ให้จำราคาได้แม่นยำ หรือยิงบาร์โค้ดได้ด้วยความเร็วสูง ซึ่งวิธีนี้จะทำให้ error rate สูงตามไปด้วย และข้อจำกัดทางกายภาพก็ยังมีอยู่ดี
  2. เปลี่ยนขั้นตอนวิธีในการดำเนินการ เปลี่ยนเทคโนโลยีในการอ่านตะกร้ารถเข็น ว่ามีของอะไรอยู่บ้าง เช่นถ้าเปลี่ยนจากเครื่องอ่านบาร์โค้ดมาเป็นเครื่องอ่าน RFID ซึ่งอาจทำให้อ่านข้อมูลทั้งตะกร้ารถเข็นได้ใน ๑ วินาที อย่างไรก็ตามวิธีนี้เป็นวิธีที่ราคาต้นทุนสูง
อย่างไรก็ตามถ้าหากอัตราเร็วในการบริการคิดเงินจากสินค้ารถเข็นคันหนึ่งยังต่ำกว่าอัตราเร็วของการมาแสดงตัวของลุกค้าที่แถวคอย ก็จะมีแถวคอยปรากฏขึ้นเสมอ ซึ่งถ้าหากเราปรับแต่งกระบวนการให้บริการจนไม่สามารถทำให้ต่ำกว่านี้ได้แล้ว เช่นฝึกให้คิดเงินได้เร็วและใช้เทคโนโลยีในการคิดเงินแล้ว ก็ย่อมมีข้อจำกัดว่าไม่สามารถทำเวลาให้ต่ำกว่านี้ได้อีก

โดยปรกติ เนื่องจากเร่งอัตราเร็วการคิดเงินได้ การลดความยาวของแถวคอย ก็มักจะทำโดยเปิดช่องสำหรับชำระเงินค่าสินค้าเพิ่มซึ่งแน่นอนว่า เวลาให้บริการคงจะไม่ลดลง แต่แน่นอนว่าเวลาในแถวคอยลดลง

ลักษณะของการจัดแถวคอยก็มีหลายแบบ โดยปรกติ ตามซูเปอร์มาร์เก็ต จะมีแถวคอยหนึ่งแถวต่อผู้ให้บริการหนึ่งคน นึ่นก็คือเป็นการเพิ่มจำนวน server นั่นเอง อย่างไรก็ตาม จะพบว่าวิธีนี้ถ้าบังเอิญใครไปต่อคนที่มีปัญหา คนต่อก็จะคอยนานกว่าปรกติ แต่ถ้าในกรณีของธนาคาร เช่น ธ.ไทยพาณิชย์ จำกัด ซึ่งในแต่ละสาขาจะบริการลูกค้าให้ใช้เพียงแถวคอยกลางหนึ่งแถวแล้วคนที่อยู่ที่หัวคิว จะถูกส่งไปยังผู้ให้บริการที่ยังว่างอยู่ ซึ่งวิธีนี้จะช่วยให้ลูกค้าที่ต้องดำเนินการนานไม่เป็นปัญหาต่อบุคคลที่อยู่ด้านหลังของตนอีกต่อไป เพราะถ้าติดก็สามารถเปลี่ยนไปยังผู้ให้บริการคนที่ว่างแทนได้

แล้วทำไมซูเปอร์มาร์เก็ตจึงไม่ใช้แถวคอยแถวเดียวบ้างหละ คำตอบคือ กินพื้นที่คิวมากเกินไป

จริงๆแล้วการออกแบบแถวคอยมีประเด็นปลีกย่อยอีกเพียบให้เราไปศึกษาต่อเช่น ถ้ามีแถวคอยหลายแถวแล้วถ้าลูกค้ากระโดดจากแถวโน้นมาแถวนี้ จะเกิดอะไรขึ้น เป็นต้น

ทีนี้แนวคิดของ การเก็บเงินในซูเปอร์มาร์เก็ตก็สามารถนำมาประยุกต์ใช้กับงานอื่นๆเช่น การใช้ easy pass บนทางด่วนซึ่งเป็นการลด service time ของการเก็บเงินนั่นเอง ซึ่งจะเห็นได้ว่า ผู้ใช้ easy pass แม้อาจมี queue time อยู่บ้าง แต่การที่ service time ต่ำมาก ทำให้ queue time มีไม่มากนัก ซึ่งทำให้โดยรวมๆแล้ว response time จึงต่ำกว่าช่องจ่ายเงินสดมาก

ทำนองเดียวกัน ในการสร้าง web server ขนาดใหญ่ จะเห็นได้ว่าเราติดข้อจำกัดของ service time ของฮาร์ดดิสก์ซึ่งไม่สามารถทำให้เร็วกว่านี้ได้ด้วยเทคโนโลยีปัจจุบัน สิ่งที่เขาทำก็คือสร้าง web server ให้เป็นฟาร์ม แล้วกระจายโหลดไปเครื่องต่างๆ ทำให้ queue time ลดลง แม้ว่า service time จะไม่ลดลงก็ตาม

อย่างไรก็ตาม การวิเคราะห์อย่างละเอียดเพื่อให้เข้าใจถึงสมรรถนะของระบบสามารถทำได้โดยใช้การจำลองสถานการณ์ (simulation) ซึ่งจำเป็นมากสำหรับการออกแบบและพัฒนาะระบบคอมพิวเตอร์ต่างๆ

หวังว่าคงอ่านรู้เรื่องนะครับ เขียนตอนง่วงๆ

1 ความคิดเห็น: