카더라가 좀 많아서 몇 가지 정리 좀 하겠습니다.
1. iWARP/ROCE/RDMA가 동일한 기술은 아닙니다.
전혀. iWARP를 지원하는 NIC중에 RDMA를 지원하지 않는 NIC들이 많습니다.
2. RDMA가 ZERO COPY이기 때문에 성능이 좋은건 아닙니다.
TCP/IP도 ZERO COPY로 구현된지 10년 넘었습니다.
다만 RDMA가 ZERO COPY인건 태생적으로 맞습니다.
3. 모든 10G/40G가 RDMA를 지원하지는 않지만 RDMA를 지원하는 카드는 많습니다. 또한 많은 >10G NIC들은 iWARP를 지원합니다.
4. RDMA/iWARP는 빠른 TCP가 아닙니다. 굳이 비교하려면 RDP (Reliable Diagram) 와 비슷하겠습니다.
5. RDMA의 DMA가 보안에 취약함. 웃기는 소리입니다.
RDMA가 REMOTE DMA입니다. 기본적으로 PC1의 메모리를 PC2에서 사용할 수 있는겁니다.
이걸가지고 보안이 어쩌구 하는것 자체가 웃기는 겁니다.
물론 프로그램 잘못짜면 위험할 수 있습니다.
아주 오래전에 어떤 회사가 요청했던 비슷한 상황이 있었습니다. 반도체/디스플레이 QA 쪽 솔루션 이었습니다.
그때 상황은
1. PC1의 카메라가 워이퍼/패널 사진을 찍음
2. PC1의 카메라가 찍은 이미지를 파일로 떨꿈 (Local DISK/NFS/SAMBA 등 다양한 방법 사용)
3. PC1이 PC2 (분석장비)에 파일이 생성되었음을 알림
4. PC2가 PC1의 파일을 가져감 (보내줌, NFS/SAMBA 등 공유 저장장치에 저장함 등등)
5. PC2는 해당 파일을 읽고 (메모리로 로딩) "분석" 함
순이었습니다.
문제는 파일의 크기가 점점 커지면서 촬영/저장/전송/분석 단계 중에서 저장/전송 단계에 너무 많은 시간/자원이 소요 되는 거였습니다.
해결방법은
1. PC1의 카메라가 사진을 찍음
2. PC1의 카메라가 찍은 IMAGE DATA가 아직 BUFFER에 있음 (Driver buffer 일수도 있음)
3. PC1은 해당 DATA가 저장된 메모리의 위치를 확인함 (메모리에 Lock걸구, 간혹 LOCK 빼먹으면 5와 같은 보안 이슈 발생 할 수 있음)
4. PC1은 PC2에 해당 메모리 위치/크기 등을 알려 줌
5. PC2는 PC1의 메모리에서 IMAGE DATA를 RDMA Protocol을 사용하여 PC2의 메모리로 가져옴
6. PC2는 PC1의 해당 메모리 LOCK 해제
7. PC2는 이미 자신의 메모리에 있는 데이터를 대상으로 "분석" 수행 함
이었습니다.
데모 수준에서 해보면 10~40배 정도의 성능 향상이 이루어 지는 걸 확인 할 수 있는데
이 간단한 구조를 실제 구현 하는게 만만치 않습니다.
당시 개발팀장 비명 소리가 지금도 생생합니다.
º¸¾È¿¡ Ãë¾àÇÏ´Ù°í ÇÑÀûÀº ¾ø½À´Ï´Ù.
intel cpu °ÔÀÌÆ® ¹ß»ýÇÏ¸é¼ ´ýÀ¸·Î xeon DDIO. RDMAÀÇ °æ¿ì º¸¾È Ãë¾àÁ¡ÀÌ ¹ß°ßµÈÀûÀÌ ÀÖ¾úÀ¸´Ï ¾î¶»°Ô ÇØ°áµÇ¾ú´ÂÁø ¸ð¸£°Ú´Ù Á¤µµ·Î¸¸ ¾ð±ÞÇß½À´Ï´Ù.
±×·¡¼ ¾Æ·¡ÀÇ ¸µÅ©¸¦ °É¾î³ù´ø °ÍÀ̱¸¿ä.
https://www.bodnara.co.kr/bbs/article.html?num=157569
°³ÀÎÀûÀ¸·Î 10G ±¸¼ºÇؼ ½áº»ÀûÀÌ ¾ø¾î¼ Áú¹®µµ °çµé¿© º¾´Ï´Ù.
RDMA ±¸¼º¾øÀÌ 10G ¸¸À¸·Î ÆÄÀÏÀ» ÁÖ°í ¹ÞÀ»¼ö Àִ°ǰ¡¿ä? ¿ø Áú¹®ÀÚµµ 10G °¡ RDMA ¾øÀÌ ¾î¶»°Ô °¡´ÉÇÏ³Ä°í ¹Ý¹®Çϼ̴µ¥ ±Ã±ÝÇÕ´Ï´Ù.
10G samba³ª nfs µîÀ¸·Î ¸»ÀÌÁÒ.
ÀÏ¹Ý TCP·Îµµ ´Ù µÇ´Â ºÎºÐÀÔ´Ï´Ù.
´Ù¸¸ RDMA°¡ AÀåÄ¡¿¡¼ BÀåÄ¡ÀÇ ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÑ ±¸Á¶/±â¼úÀε¥ À̸¦ º¸¾È Ãë¾àÀ¸·Î ºñ±³ÇÏ´Â °Ç Á» ¸ÂÁö ¾Ê¾Æ º¸ÀÔ´Ï´Ù.
Áú¹®ÀÚÀÇ Áú¹®À» Àß º¸¸é ÆÄÀÏÀ» Àü¼ÛÇÑ´Ù°í ÇÏÁö ¾Ê¾Ò½À´Ï´Ù.
±×·¸±â ¶§¹®¿¡ ±×°É NFS/SAMBA·Î Àü¼ÛÀÌ °¡´ÉÇÏ³Ä ÇÏ°í ÇϽøé ÀÌ´Â ¶Ç ÀüÇô ´Ù¸¥ Áú¹®À¸·Î º¸ÀÔ´Ï´Ù.
Àü¼ÛµÇ´Â µ¥ÀÌÅÍ°¡ ÆÄÀÏÀ̶ó¸é
10G·Î 10G Àü¼ÛÀÌ ¾î·Á¿ì¸é 100G ¾²¸é °¡´ÉÇÒ ¼öµµ ÀÖ°ÚÁÒ
±×·±µ¥ ¾çÂÊÀÇ DISK°¡ ÀûÀýÇÏÁö ¾ÊÀ¸¸é 100G¾Æ´Ï¶ó 400G·Îµµ Èûµé°ÚÁÒ
±»ÀÌ ºñ±³ÇÏÀÚ¸é ³» Â÷°¡ 200KM/h¸¦ ´Þ¸± ¼ö À־ ¼¿ï½Ã³»¿¡¼± ¾î·Æ°ÚÁÒ.
¾Æ¹«Æ° ÆÄÀÏÀ» Àü¼ÛÇÑ´Ù´Â ¸»ÀÌ ¾ø´Â°Ô ÀÇ¿ÜÀÇ ÇÙ½É Å°¿öµå¿´³ª º¸³×¿ä. »ý°¢ÀÌ Âª¾Ò½À´Ï´Ù.
°³ÀÎÀûÀ¸·Î´Â ¿Ö ±»ÀÌ ÃÔ¿µ°ú 󸮰¡ ´Ù¸¥ ÀåÄ¡¿¡¼ µÇ¾î¾ß Çϳª. º¹»çÀÇ ½Ã°£À» ÁÙÀÌ´Â°Ô ÃÖ¼±À̶ó¸é
µ¿ÀÏ Àåºñ¿¡¼ ó¸®ÇÏ°í ´Ù¸¥ ÄÄÇ»Å͸¦ mpi µîÀ» ÀÌ¿ëÇÏ¿© ó¸®¿ë µ¥ÀÌÅͳª ¿¬»ê¸¸ ¶°³Ñ°Ü
´õ ¼º´ÉÇâ»óÀ» ²ÒÇÒ¼ö ÀÖÁö ¾ÊÀ»±î?¶ó´Â »ý°¢ÀÌ µé¾ú´Âµ¥ ¹ÝµµÃ¼ Àåºñ¶ó ¿ø ±â´É ÀÌ¿Ü¿¡ ´Ù¸¥ ±â´ÉÀ¸·Î ¾²Áö ¸øÇÏ´Â
¸ðÁ¾ÀÇ Á¦¾àÀÌ ÀÖÀ¸´Ï ±×·± »ý°¢À» ÇÏ´Â °Ç ¾Æ´Ò±î Çß½À´Ï´Ù.
2. ÇöÀçÀÇ ¸®´ª½º TCP ½ºÅÃÀÌ Á¤¸»·Î zero-copyÀϱî¿ä? °á±¹ ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ±× µ¥ÀÌÅ͸¦ »ç¿ëÇÏ·Á¸é Ä¿³Î ¸Þ¸ð¸®->À¯Àú ¸Þ¸ð¸®·Î Ãß°¡ÀûÀÎ copy°¡ ÇÊ¿äÇÕ´Ï´Ù.
ÀÌ ºÎºÐÀ» Á¦°ÅÇϱâ À§ÇØ uio¸¦ ±¸ÇöÇϱ⵵ ÇØ º» ÀÔÀå¿¡¼ zero copy°¡ »ó´çÇÑ ºñÁßÀ» Â÷ÁöÇÏ´Â °Íµµ ¸Â½À´Ï´Ù. zero copy°¡ ÀüºÎ°¡ ¾Æ´Ï¶ó´Â Á¡¿¡´Â µ¿ÀÇÇÕ´Ï´Ù.
Âü°í·Î 100G ½º·çDz Å×½ºÆ®¸¦ ÇÒ ¶§ Ä¿³Î ³×Æ®¿öÅ© ½ºÅÃÀ¸·Î´Â ¼º´ÉÀÌ ¾È ³ª¿Í¼ DPDK¸¦ »ç¿ëÇß½À´Ï´Ù. 40G ±îÁö´Â ¾î¶»°Ôµç Ä¿¹öÇÑ´Ù Ãĵµ 100G ºÎÅÍ´Â RDMA¸¦ ¾²´Â ÆíÀÌ ¿ÀÈ÷·Á ´õ ½±°í ºü¸£°Ô ÇÏÀÌ ½º·çDzÀ» ´Þ¼ºÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾Æ´Ò±î »ý°¢ÇÕ´Ï´Ù. °³ÀÎÀûÀÎ ÀÇ°ßÀÔ´Ï´Ù.
=>Ãʱâ INTEL iWARP NICµé Áß¿¡¼ RDMA Áö¿øÇÏÁö ¾Ê´Â NICµé ¸¹¾Ò½À´Ï´Ù. CHELSIOµµ ¸¶Âù°¡Áö ¿´½À´Ï´Ù.
2. ÇöÀçÀÇ ¸®´ª½º TCP ½ºÅÃÀÌ Á¤¸»·Î zero-copyÀϱî¿ä?
=> ZERO COPY ¸Â½À´Ï´Ù. ±×·¸Áö ¾Ê°Ô ±¸ÇöµÈ DRIVER/STACKµµ ÀÖ±ä ÇÕ´Ï´Ù.
=> Applicartion¿¡¼ ¾î¶»°Ô ±¸ÇöÀÌ µÇ¾ú´ÂÁö´Â ÀüÇô ´Ù¸¥ ¶Ç ´Ù¸¥ ¿µ¿ªÀÔ´Ï´Ù.
º°µµ À̽´Áö¸¸ (Àú´Â °³ÀÎÀûÀ¸·Î DPDK·Î ¹º°¡¸¦ ¸¸µé¾îº» °æÇèÀº ¾ø½À´Ï´Ù)
DPDK´Â ³×Æ®¿öÅ© ÆÐŶ󸮸¦ ÇÏ´Â ProtocolÀÌ°í RDMA´Â Remote DMAÀÔ´Ï´Ù.
DPDK´Â User Space¿¡¼ NIC ·¹º§ÀÇ ³×Æ®¿öÅ©¸¦ ÄÜÆ®·Ñ ÇÒ ¼ö ÀÖ´Â Library ¸ðÀ½À̶ó¼ Æ÷ÅÙ¼ÈÀÌ ÀÖ´Ù°í ¸»µé ÇÕ´Ï´Ù.
¹®Á¦´Â DPDK´Â L2 ¼öÁØÀÇ ProtocolÀ» L6 ¼öÁØ¿¡¼ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çϱ⠶§¹®¿¡ User Space Application ¿¡¼ ¾öû³ ¼º´ÉÀ» ³¾ ¼ö ÀÖ°ÚÁö¸¸ °³¹ß ³À̵µ ¿ª½Ã ¾öû³¯ °Ì´Ï´Ù.
¿¹¸¦ µé¾î¼ DPDK¿¡¼´Â Çü½ÄÈµÈ Åë½Å ÇÁ·ÎÅäÄÝÀÌ ¾Æ´Ï±â ¶§¹®¿¡ °³¹ßÀÚ°¡ ¾î¶² µ¥ÀÌÅ͸¦ Àü¼Û/¹Þ±â µîÀ» ÇÏ·Á¸é ÀÌ ¸ðµç ÄÜÆ®·ÑÀ» Á÷Á¢ °³¹ßÇØ¾ß ÇÕ´Ï´Ù.
Áï, TCP °°Àº ÇÁ·ÎÅäÄÝÀ» Application °³¹ßÀÚ°¡ °³¹ßÇؼ ¼Ö·ç¼Ç¿¡ ³Ö¾î¾ß ÇÏ´Â °Ì´Ï´Ù.
¸¸¸¸Ä¡ ¾ÊÁÒ
¿ø Áú¹®ÀÚ°¡ Áú¹®ÇÑ ³»¿ëÀÇ ´ä ºñ½ÁÇÑ °É ãÀ¸·Á¸é
=>PC2¿¡¼ ÀÛµ¿ÇÏ´Â ºÐ¼® ÇÁ·Î±×·¥ÀÌ PC1ÀÇ CAMERA°¡ ÂïÀº µ¥ÀÌÅ͸¦ PC1ÀÇ ¸Þ¸ð¸®¿¡ °¡Áö°í ÀÖÀ» Å״ϱî À̸¦ Á÷Á¢ ¾Ë¾Æ¼ °¡Á®¿À´Â ÇÁ·Î±×·¥/½Ã½ºÅÛÀ» ¸¸µé¾î¾ß ÇÕ´Ï´Ù.
DPDK·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
RDMA·Îµµ ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
³À̵µ¾ß ¹¹..
2. ±×·¯´Ï Application¿¡¼ 'ÃÖ¼ÒÇÑ' ÇÑ ¹øÀÇ copy´Â ÇÊ¿äÇÏ´Ù´Â À̾߱âÀÔ´Ï´Ù. RDMAÀÇ À̵æÀÌ °¡Àå ÀûÀº °æ¿ì¶ó ÇÏ´õ¶óµµ RDMA´Â ÃÖ¼ÒÇÑ ÇÑ ¹øÀÇ memcpy¸¦ Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ¾Æ½Ã´Ù½ÃÇÇ ±× ÇÑ ¹øÀÇ Â÷ÀÌ´Â ¾ÖÇø®ÄÉÀ̼ǿ¡ µû¶ó¼´Â »ó´çÈ÷ Ŭ ¼ö ÀÖ½À´Ï´Ù
3. DPDK´Â L2 Library°í, ¶§¹®¿¡ »óÀ§ ÇÁ·ÎÅäÄÝ ½ºÅÃÀ» ¶óÀ̺귯¸®·Î Á¦°øÇÏ´Â mTCP °°Àº ¼µåÆÄƼ ¶óÀ̺귯¸®°¡ Á¸ÀçÇÕ´Ï´Ù. ¹°·Ð ¾ÈÁ¤¼ºÀº »ó´ëÀûÀ¸·Î ¶³¾îÁý´Ï´Ù...
ºÒ¾ÈÁ¤¼º+¹ÌÄ£µíÀÌ Ä¡¼Ú´Â °³¹ß ³À̵µ ¶§¹®¿¡ over 40G¸¦ ±¸ÇöÇϱâ À§ÇØ ±»ÀÌ DPDK¸¦ »ç¿ëÇϱ⺸´Ù´Â Â÷¶ó¸® IB Verbs API¸¦ °øºÎÇÏ´Â ÆíÀÌ ´õ ³ªÀ» ¼öµµ ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. DPDK¸¦ »ç¿ëÇØ º» ÀÔÀå¿¡¼¿ä..
»ç½Ç ÀÌ¹Ì ¿À´Ã ¿ÀÀü¿¡ ±Û ÀÛ¼ºÀںаú ÅëÈÇÏ¿© ÇöÀçÀÇ bottleneck point´Â latency º¸´Ù´Â bandwidthÀÌ´Ï, 100/200G NICÀ» ±¸¸ÅÇÏ¿© ÀÏ´Ü ÇöÀçÀÇ Àü¼Û ÇÁ·ÎÅäÄÝ·Î ¾²·çDz/¸ñÇ¥ ½Ã°£ ¸¸Á· ¿©ºÎ¸¦ È®ÀÎÇÑ µÚ ¸¸¾à ÃæºÐÄ¡ ¾ÊÀ¸¸é RDMA¸¦ ¿É¼ÇÀ¸·Î °í·ÁÇ϶ó°í Á¶¾ðÀ» µå·È½À´Ï´Ù. ¾Æ¸¶ ±×·¸°Ô ÁøÇàÀ» ÇÏ½Ç °Ì´Ï´Ù.
°³ÀÎÀûÀ¸·Î´Â ¾²·¹µå¸¦ Àß ÂÉ°³¼ À̹ÌÁö¸¦ ºÐÇÒ Àü¼ÛÇÒ ¼ö ÀÖ´Ù¸é CPU Äھ Àß ºÐ»êÇؼ near 100G ±îÁö´Â ±¸ÇöÇÒ ¼ö ÀÖÀ» °ÍÀ¸·Î º¸°í ÀÖ½À´Ï´Ù. ½Ã½ºÅÛ ¼º´É¿¡ ´Þ¸° ¹®Á¦ÁÒ. ¸¸¾à ±×°ÍÀ¸·Îµµ ºÒÃæºÐÇÏ´Ù¸é RDMA¸¦ »ç¿ëÇØ¾ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
DPDK°¡ ¾ÆÁ÷ ¹«¸£ÀÍÀº ±â¼úµµ ¾Æ´Ï°í °³¹ß³À̵µ°¡ »ó´çÇÕ´Ï´Ù.
¶ÇÇÑ DPDK¸¦ Áö¿øÇÏ´Â NICÀÌ ¸¹Áö ¾ÊÀ» °Ì´Ï´Ù.
¸¸¾à DPDK°¡ ¾î´ÀÁ¤µµ ÀÚ¸®¸¦ ÀâÀ¸¸é NIC Á¦Á¶»çµéÀÌ À̸¦ ´õ Àß Áö¿øÇÒ °ÍÀÌ°í ±×·¯¸é Áö±Ý º¸½Ã´Â ÇÑ°èµµ »¡¸® »ç¶óÁú ¼ö ÀÖ½À´Ï´Ù.
¸¶Ä¡ ±×·¡ÇÈ Ä«µå°¡ driver °³¼±À¸·Î ¼º´ÉÀÌ ÁÁ¾ÆÁö´Â °Í 󷳿ä
¹¹, ¾Æ´Ò¼öµµ
ÆÄÀϵµ part ÇüÅ·ΠsplitÇÏ¿© º´·ÄÇÁ·Î¼¼¼·Î ÇÏ´Â°É ¼±È£ÇÕ´Ï´Ù,.
´ÜÀÏÀº À̾î¹Þ±â°¡ ¾î·ÆÁö¸¸ ½ÃÇÇÀ¯°¥±Å¼ ºÐÇÒÇصθé ÆíÇϱ⶧¹®¿¡¿ä...