มาดูกันว่า CPU execution time ของ Colocation Server, Virtual Private Server และ Cloud Virtual Machines มา benchmark กันจะเป็นอย่างไร

เอา Server ที่ใช้งานเอามาเทียบกันทั้งหมด 5 ตัวคือ

  • Dell PowerEdge 1425 – Intel Xeon 3.0 GHz Processor (64 Bit)
    ตัวนี้อายุเกือบๆ 6 ปีแล้ว แต่ยังทำงานได้ดีอยู่
  • Windows Azure Virtual Machines (VM) Extra Small (XS/S) – Virtual CPU 1Ghz Processor x 1 cores
    ตัวที่ให้บริการ blog นี้อยู่
  • VPS – Intel Virtual CPU 2.4Ghz x 2 cores
    เช่ามาใช้งานเฉพาะด้าน
  • Dell PowerEdge R410 – Intel Xeon E5620 2.40GHz Processor x 4 cores
    อายุใช้งานยังไม่ถึง 1 ปีดี
  • Dell PowerEdge R210 Server – Intel Xeon X3450 2.66Ghz Processor x 4 cores
    อายุใช้งานยังไม่ถึง 1 ปีดี

ตัวซอฟต์แวร์ที่ใช้ในการ benchmark คือ sysbench

คำสั่งที่ใช้คือ

sysbench --test=cpu --cpu-max-prime=20000 run

การรัน benchmark ใช้การทำงานเพียง 1 Thread เท่านั้น เพื่อทดสอบ process เพียงหน่วยประมวลผลเดียว เพื่อลดความได้เปรียบเสียเปรียบจาก CPU Core แต่เมื่อมี Core ของ CPU ที่มากก็สามารถรับโหลดได้เยอะขึ้นสำหรับซอฟต์แวร์ที่ทำงานแบบขนานได้

ผลการรันชุดคำสั่งทดสอบเป็นดังนี้

Server Info/CPU execution time
Dell PowerEdge 1425
– Intel Xeon 3.0 GHz Processor (64 Bit)
78.9891s
Windows Azure
Virtual Machines (VM) Extra Small (XS/S)
AMD Opteron Processor 4171 HE 2.1GHz
– Virtual CPU 1Ghz Processor x 1 cores
–  Shared Core
Virtual Machines (VM) Small (S)
– Virtual CPU 1Ghz Processor x 1 cores
– Reserved Core
45.9640s
(Shared Core – XS)

45.7989s
(Reserved Core – S)

VPS
– Intel Virtual CPU 2.4Ghz x 2 cores
36.1133s
Dell PowerEdge R410
– Intel Xeon E5620 2.40GHz Processor x 4 cores
27.3706s
Dell PowerEdge R210 Server
– Intel Xeon X3450 2.66Ghz Processor x 4 cores
24.5454s

* ตัวเลข execution time ยิ่งน้อยยิ่งเร็ว

จะเห็นได้ว่าความเร็วของการประมวลผลบน Windows Azure นั้นทำออกมาได้ดีกว่า Server เดี่ยวๆ เมื่อหลายปีก่อนพอสมควรเลย ลองตัดสินเอาเองว่าเราต้องการความเร็วในการประมวลผลเยอะเพียงใด และซอฟต์แวร์ที่ใช้เน้นการประมวลผลแบบขนานหรือไม่ ถ้าใช้การประมวลผลแบบขนาน เราสามารถเพิ่ม CPU Core บน VM ได้เรื่อยๆ ตามความต้องการเลยทีเดียว

ผลการทดสอบแบบละเอียด

Dell PowerEdge 1425
Intel Xeon Processor 3.0 GHz (64 Bit) x 1 cores

Maximum prime number checked in CPU test: 20000
Test execution summary:
total time:                          78.9891s
total number of events:              10000
total time taken by event execution: 78.9686
per-request statistics:
min:                                  5.72ms
avg:                                  7.90ms
max:                                 50.48ms
approx.  95 percentile:              14.34ms
Threads fairness:
events (avg/stddev):           10000.0000/0.00
execution time (avg/stddev):   78.9686/0.00

Windows Azure Virtual Machines (VM) Extra Small (XS/S)
AMD Opteron(tm) Processor 4171 HE 2.1GHz
Virtual CPU 1Ghz x 1 cores

Shared Core – XS
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time:                          45.9640s
total number of events:              10000
total time taken by event execution: 45.9519
per-request statistics:
min:                                  4.42ms
avg:                                  4.60ms
max:                                 24.06ms
approx.  95 percentile:               4.68ms
Threads fairness:
events (avg/stddev):           10000.0000/0.00
execution time (avg/stddev):   45.9519/0.00

Reserved Core – S
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time:                          45.7989s
total number of events:              10000
total time taken by event execution: 45.7871
per-request statistics:
min:                                  4.23ms
avg:                                  4.58ms
max:                                 21.47ms
approx.  95 percentile:               4.72ms
Threads fairness:
events (avg/stddev):           10000.0000/0.00
execution time (avg/stddev):   45.7871/0.00

 

My Private Client VPS
CPU Intel Virtual CPU 2.4Ghz x 2 cores

Maximum prime number checked in CPU test: 20000
Test execution summary:
total time:                          36.1133s
total number of events:              10000
total time taken by event execution: 36.1074
per-request statistics:
min:                                  3.00ms
avg:                                  3.61ms
max:                                 16.57ms
approx.  95 percentile:               4.22ms
Threads fairness:
events (avg/stddev):           10000.0000/0.00
execution time (avg/stddev):   36.1074/0.00

Dell PowerEdge R410
Intel(R) Xeon(R) E5620 2.40GHz

Maximum prime number checked in CPU test: 20000
Test execution summary:
total time:                          27.3706s
total number of events:              10000
total time taken by event execution: 27.3697
per-request statistics:
min:                                  2.69ms
avg:                                  2.74ms
max:                                  5.32ms
approx.  95 percentile:               2.77ms
Threads fairness:
events (avg/stddev):           10000.0000/0.00
execution time (avg/stddev):   27.3697/0.00

Dell PowerEdge R210 Server
Intel Xeon X3450 Processor

Maximum prime number checked in CPU test: 20000
Test execution summary:
total time:                          24.5454s
total number of events:              10000
total time taken by event execution: 24.5444
per-request statistics:
min:                                  2.45ms
avg:                                  2.45ms
max:                                  3.64ms
approx.  95 percentile:               2.45ms
Threads fairness:
events (avg/stddev):           10000.0000/0.00
execution time (avg/stddev):   24.5444/0.00

สังคมอุดมเปลือก?

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

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

สังคมอุดมเปลือกซินะ…

Blog in the Cloud!!!

ตอนนี้ผมย้าย blog ตัวเองนี้ (http://www.thaicyberpoint.com/) และ personal web site (http://www.fordantitrust.com/) ใส่เข้า Windows Azure Virtual Machines เรียบร้อยแล้ว (ทั้ง 2 เว็บนี้มันแทบจะเป็นเว็บเดียวกันอยู่แล้ว เพราะฉะนั้น ถ้าจะย้ายก็ต้องทำทั้งสองเว็บไม่งั้นไม่เนียน)

เหตุผลที่ผมเลือกตัว Virtual Machines (VM) และใช้ Extra Small (XS) เพราะราคาต่อชั่วโมงเหมาะสมกับปริมาณการใช้งานตอนนี้ (ราคาต่อชั่วโมงมันแพงสุด แต่ถ้าเทียบ spec ต่อราคาชั่วโมงแล้วมันถูกสุด) ต้องบอกก่อนว่า Cloud สำหรับ VM นั้นคิดราคาที่ Compute เป็นหลัก (ราคาตามการประมวลผล) โดยถ้าเป็น VM จะคิดเหมาทั้งเดือน (เหมือนจองไว้เลย) ซึ่งตกชั่วโมงละ $0.013 หรือตีเป็นเดือนละ $9.36 ถ้าไม่ได้ปรับ scale up/down ตัว Compute ไปตัวที่สูงกว่านี้ (ปรับการ scale up/down ได้นั้นดีที่ระบบมันคิดราคาตามใช้งานจริงเป็นชั่วโมง เหมาะกับเว็บที่มีโหลดเฉพาะเวลาใดเวลานึง ไม่ต้องจ่ายโหลด Compute แบบเหมาตลอดเวลา) ซึ่ง XS VM ที่ได้มีความเร็วที่ CPU 1GHz โดยประมาณ และมี RAM 768 MB ซึ่งผมมองว่าเพียงพอต่อ Blog ผมอยู่แล้ว (กำลังคิดว่าจะย้ายเว็บส่วนตัวมาลงอีกหลายตัว)

OS ใน VM นั้นติดตั้ง Ubuntu Server 12.04 LTS แล้วลง Apache, MySQL และ PHP 5.4 แล้วก็ติดตั้งเหมือน Server Hosting ปรกติทั่วไป (ทำ Virtual Host บน Apache ด้วย) โดยตัว Storage ที่ติดตั้งนั้นจะอยู่บน Cloud ที่จะได้พื้นที่มา 30GB ซึ่งเป็น Storage แบบ Geo Redundant ที่ตั้ง Primary Region ไว้ที่ Southeast Asia ที่ IDC อยู่ Singapore และ Azure ทำการตั้งให้ Secondary Region ผมเป็น East Asia ที่มี IDC อยู่ที่ Hong Kong (China) อีกที่ (เป็นค่ามาตรฐานเลย) ช่วยป้องกัน link ของ IDC นั้นมีปัญหาจาก Primary Region ซึ่งตัวระบบจะสลับไปอีก IDC ได้ทันที พูดง่ายๆ เหมือนได้ใช้ Server ที่ใส่เว็บไว้สอง IDC โดยจ่ายเงินเท่ากับ IDC เดียว

สำหรับความเร็วในการย้ายไฟล์กว่า 700MB นั้นอยู่ที่ประมาณ 15 นาที โดยวืธีการย้ายแบบเร็วที่สุดคือให้ Host (Server) กับ Host (Server) มันส่งไฟล์กันเอง โดยวางไฟล์เป็นก้อนเดียวด้วย tar gzip วางไฟล์อยู่บน Server ที่ IDC เก่า (CSLox CyberWorld) แล้วให้ Azure วิ่งมา wget เอาไฟล์ที่ tar gzip ไปแทน (ส่งไฟล์เป็นก้อนเดียวเร็วที่สุด) ตอนส่งไฟล์ได้ความเร็วประมาณ 700KB-1.5MB/s โดยประมาณ คงเพราะมาจากเป็น inter connection ที่ link ของตู้ที่วางเครื่องอยู่มีอยู่ประมาณนี้ก็เลยได้ความเร็วเท่านี้

สำหรับส่วนเรื่องส่งอีเมลออกจาก VM นั้น จากที่ศึกษาดู VM ที่ Azure จะไม่ยอมให้ส่งอีเมลออกจาก VM บนนั้น (คงกลัวว่าเอา VM ไปตั้งส่ง Spam) คำนแนะนำของ Microsoft คือให้หา 2rd party Mail Server และส่ง SMTP บนนั้นแทน (มีให้เลือกเยอะ) แต่ส่วนตัวผมแล้ว ผมมีเมลของ Live Custome Domain อยู่ ก็ไปตั้ง account สำหรับส่งจาก SMTP บนนั้นโดยเฉพาะแทน คือระบบ blog ผมมันไม่ค่อยมีเมลให้ส่งออกอยู่แล้วก็เลยสบายหน่อย แล้วก็กลับมาตั้งที่ตัว WordPress ให้ส่งอีเมลออกทาง SMTP แทน mail function ของ PHP แทน (ลง plugs in เพิ่ม)

จากทั้งหมด ตอนนี้ผมเน้นเรื่อง uptime เป็นหลัก และการที่เราสามารถเข้าจาก inter ได้ดีที่สุดแทนแล้ว ซึ่งการใช้ VM บน Cloud แบบนี้เราสามารถทำ Sub Region ไปในที่ต่างๆ ได้มากกว่า 1 ประเทศทำให้เว็บเรารองรับการเข้าเว็บได้จากคนทั่วโลกได้ดีมากขึ้น ส่วนตัวการย้าย blog มาใช้ Cloud ก็เป็นแผนทดสอบ Azure โดยส่วนตัวก่อน ว่าจะไม่มีปัญหาใดๆ เมื่อนำไปใช้งานจริงใน production web site ของเว็บที่ผม consult อยู่ด้วย คือถ้าตัวเองไม่กล้าลองเอง แล้วใครเค้าจะกล้าลอง เพราะฉะนั้นจริงเป็นการทำ R&D ในรูปแบบหนึ่ง สำรวจว่ามันทำอะไรได้บ้างและมีข้อจำกัดอะไรบ้างก่อนใช้งานที่ซีเรียสจริงๆ

บันทึกสั้นๆ กับการลองของบน Windows Azure Web Sites ที่ตั้งให้ทำงานร่วมกับ MySQL บน Windows Azure Virtual Machines

Windows Azure Web Sites เป็นระบบคล้ายๆ กับ Shared Hosting สำเร็จรูปสำหรับใส่เว็บ PHP (เลือกได้ว่าจะเอา 5.3 หรือ 5.4) หรือ ASP.NET ได้ แต่ระบบนั้นสามารถ scale up/down ได้โดยจ่ายเท่าที่ใช้งานจริง โดยภายในมี SQL หรือ MySQL ทำงานด้วย (ใช้พื้นที่เยอะหรือมี load เยอะก็จ่ายตามจริง) แต่ถ้าใช้ MySQL มันจะทำงานกับ ClearDB ที่เป็น Cloud MySQL database ที่ราคาแพงสุดกู่เลยถ้าเอาไปใช้งาน production (มันดีที่ scale ได้ และเป็น Cloud แต่ราคามันก็แพงไป) ด้วยราคาที่แพง ผมจึงปรับแผน ไปใช้ MySQL ที่ผมติดตั้งเองบน Windows Azure Virtual Machines โดยลง Ubuntu Server 12.04 LTS แทน แล้วติดตั้ง MySQL 5.5 บนนั้น โดยการติดตั้งทั้งหมดทำผ่าน SSH แล้วทำการเปิด Firewall Endpoint ที่ port 3306 ให้ Windows Azure Web Sites ติดต่อเข้ามาโดยผมจับ netstat เอาว่าวิ่งเข้ามา IP อะไร แล้ว allow สิทธิ์ตาม IP ที่วิ่งเข้ามา (จากที่เช็คเหมือนไม่ dynamic IP นะ)

การใช้ Windows Azure Web Sites ทำให้เราย้าย Instance ไป regional อื่นๆ หรือเพิ่ม Instance ในกรณีที่ Compute เริ่มตันได้ง่ายๆ ภายในเวลาไม่นานนัก ซึ่งมันง่ายมากๆ สำหรับงานที่ใช้กับเว็บที่รองรับคนเข้าจากหลายๆ พื้นที่บนโลก

โดยรวมตอนนี้ก็โอเคนะ ลองดูที่เว็บที่ลองใช้ตัวอย่างที่ว่าคือ WordPress นั้นเอง (เดี่ยวลอง Drupal อีกตัว)

จากการสำรวจหลังลองของแล้วนั้น บน Windows Azure Web Sites ใช้ Windows Server 2008 R2 Enterprise Edition Service Pack 1 ติดตั้ง IIS 7.1.0761.0, PHP Version 5.3.13 ผ่าน Server API บน CGI/FastCGI ตั้ง memory_limit ที่ 128M ค่าเริ่มต้นของ post_max_size อยู่ที่ 8MB, upload_max_filesize อยู่ที่ 2MB และมี display_errors เป็น Off แต่ 3 ตัวหลังนี้ตั้งค่าเพิ่มเติมได้จาก .user.ini ด้วย

สำหรับ rewrite rule สามารถใช้ได้ โดยผ่าน web.config แต่การตั้งค่าแตกต่างจาก Apache ตรงนี้ต้องศึกษาสักนิดนึง

สำหรับการส่งเมลนั้น ไม่สามารถใช้งานผ่าน mail function บน PHP ไม่ได้ แต่ต้องใช้งานผ่าน 3rd party mail server ข้างนอกแทน (ผ่านพวก SMTP อะไรพวกนั้น) หรือจะใช้ server ที่พ่วงขายร่วมกันก็ได้ (จ่ายเงินเพิ่ม)

Ref.

ความคิดเห็นส่วนตัวกับ Android Camera

จากข่าว ผู้บริหารกูเกิลสัญญา รอพบกับ Nexus พร้อมกล้องคุณภาพเยี่ยม  ส่วนตัวจากที่ได้ลองจับ Android Camera มาแล้วนั้น Android Camera มีปัญหากับการจัดการพลังงานสูงมาก กล้อง DSLR ถ่ายรูป 1,000 shot ด้วยการชาร์จเพียงครั้งเดียวเป็นเรื่องปรกติไปแล้ว แต่ Android Camera ที่มีขายในตอนนี้แค่ 200-300 รูปก็หืดจับแล้ว คือด้วยความที่ Android Camera มันไม่ได้ถูกปรับแต่งให้ใช้งานกล้องอย่างเดียว ตอนที่ใช้ถ่ายรูปจริงๆ แต่ดัานหลังของระบบภายในของมันมีอะไรอีกเพียบที่ทำงานอยู่ และทำให้กินแบตตลอดเวลา ถ้า Android ไม่ปิดระบบพวกที่ว่าได้สมบูรณ์และมุ่งไปที่กล้องและเปิดระบบพวกนี้เฉพาะเวลาที่ใช้จริงๆ มันก็จะมีปัญหาเรื่องนี้อยู่ตลอด และส่วนตัวผมคิดว่า Google คงไม่ได้คิดจะทำแบบนั้น เอาง่ายๆ แค่ต้องมาเปิดจอหลังกล้องตอนถ่ายตลอดเวลาก็กินแบตเป็นว่าเล่นแล้ว บนจอ 4” ขึ้นไป

ซึ่งจากดูก็น่าจะมองออกว่า แค่จำนวนภาพแค่นี้กับการที่เราต้องพกแบตสำรองไปเพื่อถ่ายให้ได้จำนวนเท่ากัน บางครั้ง Android Camera อาจจหนักกว่าเสียด้วยซ้ำ

ประเด็นต่อมาคือ ถ้ากล้องแฮงตอนถ่ายงานสำคัญคงร้องไม่ออก แน่ๆ (ณ ตอนนี้) DSLR ทำขึ้นมาบนพื้นฐานความเสถียรและตรงไปตรงมาของระบบ เพราะปุ่มไม่ต้อง minimalize เน้นตรงไปตรงมา ไม่มีช่างภาพที่ถ่าย DSLR จริงจังมากๆ มากดๆ หลังกล้อง LCD ขนาดใหญ่เพื่อเลือก ISO, F Stop หรือ Speed shutter กับงานที่จริงจังและต้องการการปรับแต่งที่สูงทันทีหรอก เอากล้องนาบดู View finder แล้วต้องปรับพวกนี้ได้จากใน View finder แล้วใช้มือจับๆ ที่กล้องเพื่อปรับแทน มันเร็วและทันต่อเหตุการณ์มากกว่า

จากที่บอกแบบคราวๆ ด้านบน ประเด็นที่ผมกำลังบอกคือ ในปัจจุบันมันยังแทนกันไม่ได้ ถึงจะบอกว่าทำ sensor ขนาดใหญ่ แต่ Electronic Shutter ยังมีข้อที่ต้องระวัง เช่นปัญหา Rolling Effect ที่ยังมีปัญหาอยู่ (ผมว่าคิดในอนาคตคงแก้ไขได้) ต่อมาก็เรื่อง Physic ของแสงระหว่างเลนส์และเซ็นเซอร์ยังเป็นประเด็นอยู่ เพราะมันยังไงก็ได้ไม่เท่ากัน (ภาพเบลอโบเก้สวย หรือภาพคมในระยะอนันก็ยังสู้ไม่ได้ เพราะข้อจำกัดที่ Sensor ขนาด/คุณภาพ Optic) มันมีเรื่องที่ต้องคิดซึ่งเป็นข้อจำกัดที่บางครั้งมันไม่เกี่ยวกับ OS หรือชนิดของกล้องถ่ายรูปเพียงอย่างเดียว แต่คนที่คิดถึง Android Camera คือคนที่คิดถึงภาพของกล้องที่ใช้ OS จากมือถือที่ก็รู้ๆ กันอยู่ว่า OS ตัวนี้มันก็มีแฮงๆ ค้างๆ กันอยู่เป็นเรืองปรกติและกล้องและเลนส์ที่ให้มาบนมือถือส่วนใหญ่ก็ Sensor เล็กกว่า Compact และเลนส์ก็ไม่ได้ดีมากด้วย

นี่ยังไม่รวมไปถึง RAW File ที่ถ้าเทียบกับคนที่จะเอา Android Camera มาแทน DSLR แล้วนั้น ถือว่าสำคัญมาก เพราะบางครั้งภาพที่ถ่ายอาจสวยที่หลังกล้อง แต่สุดท้ายภาพนั้นอาจต้องถูกเอาไปใช้งานต่อและมีการปรับแต่งภายหลัง การที่ Android Camera ให้ภาพที่เป็น JPEG เพียงอย่างเดียวนั้น สำหรับช่างภาพที่จะเอามาทดแทน DSLR นั้นไม่เพียงพอแน่ๆ

ประเด็นของเรื่องที่เล่ามาอยู่บนพื้นฐานส่วนตัวที่ถ่ายรูปด้วย DSLR อยู่และตอนหลังก็พกแต่กล้องมือถือไปถ่ายรูปตอนเที่ยวเสียมากกว่า แต่ผมยังมองว่า คำตอบมันอยู่ที่ว่าคุณต้องการภาพที่ดีที่สุดเท่าที่คุณจะมีอุปกรณ์หาได้หรือ ต้องการความสะดวกสบายในการเที่ยวและมีภาพที่พอใช้ได้กับการท่องเที่ยวนั้นๆ มากกว่ากัน