October 20, 2011

Sockets Direct Protocol (SDP)

Posted in Java at 9:13 am by Adison Pimpakan

Sockets Direct Protocol (SDP)

วันก่อนได้มีโอกาสไปอ่านเรื่อง SDP ซึ่งเป็นหนึ่งใน new feature ของ jdk7 รู้สึกว่าน่าสนใจมากกก เนื่องจาก server ของ office เองถ้าไม่นับ mssql แล้วก็แทบจะเป็น solaris ทั้งหมด หึหึ ความันส์จะบังเกิดก็คราวนี้แหละ เอาละไม่พูดมาเรามาเข้าเรื่องกันเลย

เอาแบบง่ายๆละกัน SDP ก็คือ protocol ใหม่(ของผม แต่เก่าแล้วสำหรับชาวโลก) ซึ่งพัฒนามาตั้งนานนนนแล้วโดย InfiniBand Trade Association หรือ InfiniBand (IB) ซึ่งแก้งนี้มีประสบการณ์ในการ develop ‘High Performance Computing System’ อยู่แล้ว ซึ่งหนึ่งใน feature ที่มีใช้กันเยอะก็คือ Remote Direct Memory Access (RDMA) – จริงๆแล้วผมเคยเห็น feature นี้ใน IBM blade server ที่ vendor เอามานำเสนอ ตอนนั้นผมยังคิดอยู่เลยว่ามันทำได้ขนาดนั้นเลยเหรอ ถึงขั้น cpu ไป access memory ของอีกเครื่องได้ บระเจ้าาาา เทพชัดๆ- จากประสบการณ์ของทีมนี้เราคงเชื่อใจฝรั่งแก้งนี้ได้ในระดับหนึ่งว่ามันไม่ได้โม้

เรื่องการทำงานของ SDP ก็มีหลักการง่ายๆคือ พยายาม bypass TCP mechanism ไปแล้วไปใช้ SDP แทน ซึ่งเขาว่ากันว่ามันจะลด overhead ต่างๆลงอย่างไม่น่าเชื่อ จริงเหรอวะ ยังคงเป็นคำถามในใจ…. ตอนนี้กำลัง print case study ไปอ่าน ใครสนใจก็ นี่เลย : http://www.mellanox.com/content/pages.php?pg=white_papers อาจจะไม่ตรงซะทีเดียวแต่ก็เอามาดูว่าแก้งนี้มันทำอะไรสำเร็จไปแล้วมั่ง แล้วเกี่ยวกับ SDP ป่าว

การ implement นั้น สิ่งที่จะต้องทำมีขั้นตอนง่ายๆต่อไปนี้

  1. เตรียม SDP Configuration file ซึ่งก็ไม่ยากหาได้จาก toturial ทั้วไป เช่น http://download.oracle.com/javase/tutorial/sdp/sockets/file.html
  2. enable SDP ซึ่งเป็น system property ตอน run ก็เพิ่มเข้าไปง่ายมากๆ

*อย่าลืมดูเรื่อง IPv4, IPv6 ด้วยนะครับ มันมี issue ที่จำเป็นต้องทราบก่อนการใช้งาน แนะนำว่าให้ใช้ IPv6 แล้ว end-point ใหนที่ใช้ IPv4 ก็แค่เพิ่ม prefix เข้าไป

ส่วนเรื่องการ implement ในมุมของ programmer ถ้าคุณใช้ class ตามด้านล่างอยู่แล้ว ก็ไม่จำเป็นต้องทำอะไรเพิ่มเติมครับ ใช้ได้เลย แต่ถ้าใช้ 3rd Party อื่นๆก็ต้อง check based lib อีกที ^^

java.net package:
	Socket
	ServerSocket
java.nio.channels package:
	SocketChannel
	ServerSocketChannel
	AsynchronousSocketChannel
	AsynchronousServerSocketChannel
ขอให้มีความสุขกับ performance ที่เพิ่มขึ้นนะครับ
Advertisement

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 )

Connecting to %s

Follow

Get every new post delivered to your Inbox.