Tuesday, May 03, 2005

Linux บน Mainframe

วันนี้ได้มีโอกาสสัมผัส linux บน ​Mainframe
โดยมีหน้าที่ standby เพื่อเกิดปัญหาในการ
ย้าย Web Application จาก AIX Unix Server
ไปยัง Mainframe

ตัว Architecture มีลักษณะดังนี้
ที่ชั้นแรกสุดก็คือชั้นของ LPAR (Logical Partition)
ซึ่งก็คือการแบ่ง computer resources (processors, memory, storage)
ออกเป็นส่วนๆ โดยแต่ละส่วนก็จะมี Operating System
ของตัวเอง
ชั้นที่ 2 ก็คือ VM (virtual machine) ไม่ใช่ Java Virtual Machine นะ
แต่เป็น Virtual machine ที่เปิดโอกาศให้เรา
ติดตั้ง Virtual Server หลายๆตัวใน VM ได้
(แตละตัวก็จะมี virtual cpu, virtual memory, I/O, network
ของตัวเอง)
ขั้นที่ 3 ถึงจะเป็น Linux
โดยที่นี่ใช้ SUSE Linux Enterprise Server 8

หลังจาก Telnet ได้ เริ่มแรกสุดก็ทดสอบ Java Benchmark ก่อนเลย
โดยใช้ Scimark2
ได้คะแนน 66 คะแนน
ยิ้มเลย notebook เรายังได้แต้มตั้ง 200 นิดๆเลย
ด้วยความไม่แน่ใจก็เลยลองไป run ทดสอบ
บน Aix Unix Server ด้วย ปรากฎว่าเจ้า Power PC
ทำคะแนนได้ 266 คะแนน
หลังจากสับสนงงงวยกับคะแนนที่ได้ ก็เลย
ไปหา Red Book ของ IBM มานั่นอ่านดู
ก็พบว่า ตัว linux บน Z os นั้นเหมาะกับงานที่มีลักษณะ
I/O bound สลับกับ CPU bound แต่ไม่เหมาะอย่างยิ่ง
กับงานประเภท Deep Computing หรือ cpu intensive

เริ่มแรกสุดก็เจอปัญหาไม่สามารถต่อ jdbc ไป db2 ได้
มีข้อความว่า unsatisfied linkage error ใล่หา
สักพักจึงเจอว่า
ตัว SUSE เป็น 64 bit
ตัว WebSphere เป็น 31 bit (ไม่ได้พิมพ์ผิดนะ 31 bit)
ส่วน db2 client เป็น 64 bit
ปัญหาเกิดเมื่อ java ที่มากับ Websphere พยายาม
ที่จะต่อ jdbc ซึ่งจะต้องมีการเรียก native code
ของ db2 client ซึ่งเป็น 64 bit
ก็เลยขอให้คนของ ibm ลง db2client
version 31 bit ให้แทน

ปัญหาต่อไปก็คือเวลาที่ใช้ในการทำ I/O
เริ่มตั้งแต่การ FTP ตัวฐานข้อมูล ซึ่งช้ามากๆ
จากนั้นก็เป็นการ create table space
ของ db2 (เนื้อที่ประมาณ 30 GB)
ซึ่งก็ใช้เวลาไปอีก 1 ชั่วโมงครึ่ง
น้องชิ้มแจ้งว่า Data ชุดเดียวกันนี้
เคยเอาไปลงที่เครื่อง PC เวลาที่ใช้ในการ
create table space กับ copy data
ใช้เวลารวมกันแค่ 22 นาที
ด้วยความสงสัยก็เลยเอา Bonnie
มาทดสอบเปรียบเทียบกับ unix server
ปรากฎว่า write I/O ตัว unix กินขาด
(เผอิญว่าลืมเอา thumbdrive ที่บันทึกผลลัพท์กลับมา
ไว้ได้กลับมาเมื่อไรจะ post ให้ดูอีกที)
ก็เลยแจ้งคนของ IBM ว่าช่วยดูให้ด้วย
config อะไรผิดหรือเปล่า

ปัญหาถัดไปก็เป็นเรื่องของ web server
ซึ่งเราจำเป็นต้องใช้ mod_gzip ด้วย
ตัว IBM http Server ที่ bundle มากับ Websphere นั้นไม่
สามารถใช้ mod_gzip ได้
ก็เลยต้องใช้ Apache แทน
แต่ปรากฎว่าเกิดปัญหา conflict ของ 64 bit กับ 31 bit
อีกแล้ว
เนื่องจาก so ของ websphere เป็นแบบ 31 bit
ส่วน apache ที่มากับ SUSE เป็น 64 bit
ก็เลยลอง load source code ของ apache
มา build เองโดยกำหนด CFLAGS=-m31 เพื่อบังคับ
ให้ gcc compile ออกมาเป็น 31 bit
แต่ก็ไปตายตอน ld อยู่ดี
ในส่วนนี้ก็เลยให้คนของ ibm (อีกแล้ว)
ไปจัดหา Ibm HttpServer version
ที่ใหม่กว่า 1.3.31 และเป็น 31 bit มาให้

นอกจากนี้ยังพบปัญหาเกี่ยวกับการ FTP
ที่ส่ง file ได้สำเร็จแต่เกิดมีเนื้อหาบางส่วน
ผิดเพี้ยนไป
แต่ปัญหาในส่วนนี้คาดว่าไม่เกี่ยวข้องกับ linux บน Mainframe

ส่วนปัญหาหนักๆที่ยังไม่ทดสอบ
ก็จะเป็นเรื่อง Jasper Report ที่น่าจะมีปัญหาในส่วน
AWT Thread กับ X Window

สรุปเบื้องต้น
ก็คงต้องอวยพรให้บริษัทที่ปรึกษา ผู้ซึ่งแนะนำให้
move infra structure ขึ้นไปอยู่บน Mainframe
จงโชคดีในการย้ายด้วยเทอญ
ส่วนตัวผมนั้นรู้สึกหวั่นๆอยุ่บ้าง เพราะดูท่าแล้ว
resources ที่มีให้มัน fit เปรี๊ยะเสียเหลือเกิน
(แถมยังแพงด้วย มี paper อยู่อันบอกไว้ว่า
ด้วยราคาของ mainframe แล้ว เราต้อง
cosolidate linux อย่างน้อย 32 server
จึงจะเริ่มมี cost ที่สูสีกัน)

ปล. ขอนินทาที่ปรึกษา (ไม่บอกนะว่าอาจารย์
มหาลัยไหน) และคนของ ibm
ด้วยเถอะ สมัยที่เริ่มต้นโครงการใหม่ๆ (เมื่อต้นปีก่อน)
ทั้งที่ปรึกษาและคนของ ibm บอกว่าเครื่อง
database server ควรใช้ 4 cpu
ตัว application server ควรใช้ 2 cpu
ส่วนผมยืนยันและนั่งยันว่าผิด มันต้องกลับกัน
ผลลัพท์ก็ prove ไปแล้ว
ปรากฎว่า load ปัจจุบัน ถ้าใช้คำสั่ง sar ดู
เครื่อง App Server มี cpu load อยู่ที่ 40-60 %
ส่วน DB Server มี cpu load -> 5 % (tune ไว้ดี)

Related link from Roti

2 comments:

bact' said...

31 bit! เพิ่งเคยได้ยินอ่ะ สุดยอด...

แต่คน IBM ขายของเก่งจริง ๆ นะ :P

Vitaya said...

เขาก็บอก ถูก นะครับ คน IBM มันมีบางอย่างมากกว่านั้นมอง ยาวๆ database อนาคตไม่ได้ เก็บไว้แค่ นี้นะครับ ส่วน app 2 CPU อาจมอง แค่ was ใช้ Java กิน resource เยอะกว่าแยก tier ออกมา ัมนก็ไม่เกินมากกว่านั้น ลอง มองส่วนอื่นทีมันกิน resource CPU มากกว่านั้น ดีกว่าไหมครับ อย่าพึ่งไป โทษ IBM หรือ อาจารย์