เรียนDistributed System แต่เหมือนเรียนSimulation

 Highway

วันนี้ เริ่มทำโครงงาน “Peer-to-Peer Storage Simulation” เป็นโครงงานที่สองของผมที่ได้เรียนวิชา Advanced Topics in Distributed System ซึ่งเป็นวิชาที่เปิดเฉพาะนักศึกษาปริญญาเอกวิศวะคอมที่ NTU และจะว่าไปแล้ว มันเหมือนกับว่า Simulation หนักพอๆกับเนื้อหาวิชา Distributed System สรุปคือเหมือนเรียนสองวิชาไปพร้อมๆกัน

 

 


ก่อนจะเริ่มบ่นถึง Project ที่สอง ผมขอบ่นถึง Project แรกที่เพิ่งผ่านไปหมาดๆ และอาจจะบ่นละเอียดกว่าตัวที่สองซะอีก มันเกี่ยวกับการทำ Parallel Simulation ของระบบสื่อสารโทรศัพท์มือถือหรือ Cellular Phone Network บนทางด่วนที่ยาวถึง 40 กม. โดยแต่ละช่วงของทางด่วนมี Cell หรือเครือข่ายมือถือครอมคลุมอยู่เพียงแค่ 2 กม. (ให้นึกภาพว่าทางด่วนยาวเป็นเส้นตรง 40 กม.) ดังนั้น ต้องมี 20 Cell แต่ละ Cell มีช่องสัญญาณมือถือหรือ Channel อยู่ 10 channel โดยลูกค้าจะโทรได้ต้องจอง channel ไว้ 1  channel ให้ได้จาก cell ที่กำลังโทรก่อน จากนั้นหากรถวิ่งผ่านไปหาอีก cell โทรศัพท์จะต้องคืน channel ที่จองให้กับ cell เดิมก่อนจะขอ channel จาก cell  ใหม่  (เขาเรียกเหตุการณ์นี้ว่า handover)

โจทย์มีว่าถ้ามีรถยนต์วิ่งไปมาและก็ลูกค้าในรถอยากจะโทรหาโครสักคนที่คิดถึง มันจะเกิดปัญหาสัญญาณไม่ว่าง (Block) หรือปัญหาสายหลุด (Drop) ทั้งหมดเท่าไหร่ คิดเป็นกี่% และเกินกว่าข้อกำหนดของการควบคุมคุณภาพการให้บริการหรือไม่ โดย Block คือ ตอนเริ่มโทรแล้วโทรไม่ติด เนื่องจาก channel ของ Cell ที่กดโทรน่ะเต็ม (ถูกใช้ไปทั้ง 10 channel) แต่ Drop คือ ตอน handover แล้วสายหลุด เนื่องจาก channel ของ Cell ที่เราจะข้ามไปน่ะมันเต็ม ความยากของ Project แรกนี้ก็คือ คำว่า Parallel Simulation นี่แหละครับ โดยเราต้องจำลอง 20 Cell บนคอม 20 เครื่อง และก็จำลองรถวิ่งจาก Cell หนึ่งข้ามไปอีก Cell (รถแต่ละคันอิสระจากกัน มีความเร็วแตกต่างกันไป) ดังนั้น เราต้องจำลองเหตุการณ์ รถวิ่งจากคอมเครื่องหนึ่งไปหาอีกเครื่องนั่นเอง (คอมหนึ่งเครื่อง แทน 1 cell) และแน่นอน ตอนคนโทรศัพท์มันก็เริ่มโทรบน Cell ไหนๆก็ได้ และเหตุการณ์การโทรศัพท์มันเกิดกันอย่างขนานกัน (มีลูกค้าหลายคนโทรพร้อมๆกัน) ความยากของการทำ Parallel Sim มันก็อยู่นี่แหละครับ คือ Synchronization ที่เคยเรียนในวิชา OS แต่มันเป็นการ Sync บนคอมคนละเครื่อง และเราต้องควบคุมเหตุการณ์ให้ประสานกันด้วยว่า เหตุการณ์ไหนเกิดก่อนหลังเมื่อเราต้องรันงานแบบขนาน โอเคเอาเป็นว่า Parallel Simulation เป็นไง ยากไง รออ่าน Boomrica ในบทความหน้า (ๆๆๆ) ผมคงได้พูดถึง Project นี้ละเอียดมากขึ้น และคงได้อธิบายว่าผมทำยังไงกับมัน 

มาต่อที่ Project ที่สองที่ผมเริ่มทำวันนี้ มันเกี่ยวกับการทำ Simulation ของ Peer-to-Peer Storage System หรือระบบแชร์พื้นที่เก็บข้อมูลแบบ Peer-to-Peer นั่นเอง จะทำเป็น Sequetial / Parallel Sim ก็ได้ (ไม่บังคับ) และสิ่งที่เราสนใจในการทดลองครั้งนี้คือ Algorithm ในการทำ Maintenance หรือการตัดสินใจในการสำเนาซ้ำซ้อน (Redundance) ข้อมูลบน Peer-to-Peer Storage เพื่อรับประกันความคงทน (หรือ Fault tolerance) ของระบบ โดย Algorithm ที่ว่านี้มีอยู่ 4 ชนิด (Eager, Deterministic Lazy, Randomized Lazy และ Proactive) นอกจากนี้ เราต้องคำนึงถึง Placement Algorithm ซึ่งเป็นวิธีเลือกจัดเก็บไฟล์บน Peer ต่างๆด้วยว่าใช้ Algorithm ไหน เพราะแต่ละตัวก็มีประสิทธิภาพแตกต่างกันไป เอาล่ะครับ พอเป็นการเริ่มต้นแบบหอมปากหอมคอ รายละเอียดของเนื้อหาที่ผมไม่ได้กล่าวถึงคือ Peer-to-Peer Storage System กับ Parallel Simulation เอาเป็นว่าถ้ามีเวลาว่างอีกจะมา update ครับ ตอนนี้ยังปวดหัวกับ Project นี้นี่แหละครับ เลยไม่ค่อยได้ทำอะไรก้าวหน้าเท่าไหร่

3 thoughts on “เรียนDistributed System แต่เหมือนเรียนSimulation

  1. Miixel2 says:

    ท่าทางจะยากนะครับเนี่ยย อ.บูม ผม ทศเองคร๊าบ

  2. เรื่อง Simulation นี่ผมหาเครื่องมือดีๆ อยู่นานมาก

    บางทีผมแค่อยากได้การคาดเดาผลจาก site survey ว่าจะวางกำลังส่ง AP มากน้อยแค่ไหน หรือถ้า applied พวก QoS แล้วจะเกิดอะไรขึ้น

    พบว่าผมต้องมานั่งเขียน NS3 Script ใหม่เอง

    มันน่าจะมีอะไรง่ายกว่านี้จะได้เอาไปใช้ในเชิงอุตสาหกกรมได้จริงๆ ตอนนี้เห็นวาง AP กันแล้วเศร้าใจ ไร้หลักวิชามาก (วางเอาคลื่นแรงๆ คลุมๆ อย้่างเดียว

    • เห็นด้วยครับ ผมว่าเรื่อง simulation เป็นอะไรที่ยุ่งพอสมควร โดยเฉพาะช่วงตอนทำ calibrate หรือเทียบผลกับของจริงแล้วมันไม่สอดคล้องกันเนี่ย วุ่นวายไปหมดเลยครับ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s