System Compleat.

'YZCerberos'에 해당되는 글 231건

  1. pNFS on Nexenta
  2. MONO Environment on Ubuntu
  3. 업무와 열정사이 6
  4. Final Fantasy X Piano Collection - To Zanarkand 7
  5. NAPI on Linux 1

pNFS on Nexenta

Techs
( younjin.jeong@gmail.com , 정윤진 )


파일 시스템의 클러스터링에 대해서는 이미 이슈화 된지 몇년이 지난 상태여서 본 내용에 대해서 이미 확인해 보거나 BMT 까지 수행 해 보신 분들도 많으시겠지만, 간략한 소개의 의미 및 nexenta.org 의 관련 내용 번역으로 간략히 포스팅 하고자 한다. pNFS 를 Nexenta 에서 서비스로 사용하는데에는 다소 신중함이 필요 하겠지만, VM 에서 여러대의 Nexenta 를 올려두고 간단히 테스트 하여 성능을 비교하는 재미는 쏠쏠하지 않겠는가.


pNFS 에서의 p 의 의미는, Parallel 이다. 전통적인 NFS v4에서 지원하는 단일 서버 - 클라이언트 서버 간의 Data 와 Meta Data 통신을 구분하여 병렬로 나누어 놓았다고 생각하면 이상적이라 할 수 있겠다.
클러스터 파일 시스템은 굉장히 여러가지 종류가 있고 구현 방법에 따라 설치가능한 패키지들이 있겠지만, 전통적으로 사용되는 NFS 에 대한 병렬 확장은 이미 2005년 경 부터 각 벤더 ( ex. EMC, IBM, NetApp ) 에 의해 연구되어 왔고, 종래에 와서 File 기반 서비스에 대해서는 어느정도 사용 할 만한 규모가 되었다 생각 한다.
물론 Block Level 의 클러스터FS 에 대해서는 여기서는 논외로 하고.

일단 본 포스팅에서 소개하고자 하는 내용은 Nexexta 에서의 pNFS 구현이며, 이 내용은 nexenta.org 의 wiki 내용 중 일부를 번역 한 것이며, 한글을 읽는데 불편함을 느끼시거나 원문을 직접 보고싶은 분들 께서는
http://www.nexenta.org/projects/6/wiki/PNFS?version=37 에서 내용을 참조 하시면 되겠다.

소개 ( 본 내용의 날짜는 2010년 01월 24일에 포스팅 된 wiki 를 근거로 한다 )
병렬 NFS ( pNFS )는 NFS v4.1 표준에 포함된, 클라이언트가 스토리지에 병렬로 직접 엑세스 하는 방법을 다루고 있다.
pNFS 는 오늘날 사용되고 있는 NFS의 확장성 및 성능상의 이슈를 해결하기 위하여 대두된 구조로서, 기본적인 아이디어는 데이터와 메타데이터를 분리하는 것이며, 이는 아래의 그림과 같이 전통적인 NFS 와 pNFS가 어떻게 다른지 설명 될 수 있다. ( 이미지는 pNFS 위키페이지의 것을 성능상의 이유로 본 블로그에 사진으로 첨부한다. )

Traditional NFS




How pNFS works.



차이점을 설명하면,

1. pNFS는 클라이언트들이 데이터 서버에 직접 엑세스가 가능하도록 하고 있다.
2. 데이터는 데이터 서버들 사이에서 분리되어 저장이 가능하다.
3. 데이터에 대한 엑세스는 메타 데이터 서버들을 통해 하위 호환성을 유지한다.

이로 인한 잇점은,

1. 고성능 : 확장 가능한 여러대의 서버로 파일을 분산함으로서 성능 및 확장을 노릴 수 있다.
2. 수평적 확장 :  단일 NFS 를 사용함으로서 발생 할 수 있는 제한에서 자유로울 수 있다.
3. 데이터와 메타데이터의 분리 :  데이터에 대한 변경 ( 생성, 추가, 삭제 기타 등 ) 은 메타데이터 서버에서 유지한다.
4. 전통적 NFS서버의 사용성을 유지한다.
5. 전통적 NFS서버와 같은 방법으로 마운트 할 수 있다.

#mount server:/path /mnt


pNFS on Nexenta

현재 pNFS 의 기능은 on-gate b121 에 기초하고 있으며, 이는 NCP 에서 컴파일/빌드 되었으며, 동작한다.
pNFS 에 관한 보다 많은 정보, 바이너리 및 소스와 컴파일러 셋( sun studio and other tool set )은 다음의 링크에서 다운로드 가능하다.  [pnfs-project] http://hub.opensolaris.org/bin/view/Project+nfsv41/downloads


Nexenta Core 시스템에서의 pNFS 셋업

pNFS 를 위한 3가지의 주요 설정 항목이 있다.  클라이언, 메타데이터 서버 ( MDS ) , 데이터 서버 ( DS )

현재, DS와 MDS는 반드시 별도의 머신에 설치 되어야 한다. 기본적으로 NCP - pNFS 설정을 위해서는 3 개의 머신을 추천한다.  한대는 클라이언트, 한대는 메타데이터 서버, 마지막 한대는 데이터 서버.
지금까지 설명 된 내용을 구동하기 위한 설정은 아래를 참고 한다.


메타 데이터 서버 설정 ( MDS )

공유 path 생성

#share [pathname]


데이터 서버 생성 ( DS)

파일 시스템 공유 설정

#sharemgr create -P nfs p-group
#sharemgr add-share -s /export p-group

NOTE: 본 단계에서 사용하는 파일 시스템은 임시적으로 사용하는 것이다. 데이터 서버는 지정한 파일 시스템을 사용하지 않는다. 데이터 서버의 SMF 서비스 ( svc:/network/dserv:default ) 는 NFS 서버의 SMF 서비스 ( svc:/network/nfs/server:default) 에 의존적이다.  파일 시스템의 공유는 NFS 서버의 서비스가 활성화 되었으며, 구동중임을 보장한다. ( 즉, NFS 서비스가 올라오면 관련된 서비스가 정상 동작함을 의미 한다는 표현 )

데이터 서버는 dservadm 툴을 사용하여 관리되며, 현재 man 페이지는 제공되고 있지 않으나 --help 옵션은 가능하다.

#dservadm --help

MDS 의 주소를 DS에 등록한다.

1. #dservadm addmds [MDS_IP_ADDR]
2. /etc/hosts 파일에 엔트리로 등록

pNFS 데이터셋 생성

#zpool create ppool /dev/dsk/c1t1d0
#zfs create -t pnfsdata ppool/pdata

NOTE:  데이터 서버에는 적어도 1개의 pNFS 데이터셋이 존재해야 한다. 따라서, 여러개의 인스턴스가 데이터 서버에 존재한다면, 인스턴스별로 반드시 1개 이상의 데이터셋을 생성해야 함을 잊지 말자.

dserv 서비스 시작 및 온라인 체크

#dservadm enable
#svcs dserv
    STATE          STIME        FMRI
    online         20:45:24    svc:/network/dserv:default


클라이언트 설정

MDS를 클라이언트로 마운트.

#mount -F nfs -o vers=4 [mds:/path] [mount_point]


현재 기능상의 문제. ( 이 부분의 번역은 다소 오류가 있을 수 있어 원문을 함께 첨부합니다. 오류 없으시길 )

클라이언트로 부터 파일이나 디렉토리가 제거될 때 주요한 병목이 발생하고 있다.
The major bottleneck is the fact that currently even though the files and directories are deleted from the client.. the dataset that is created on the withholding pool does not show any reduction in size.. This mean, only the namespace is being deleted from the client and mds.. Thus over a period of time the data server will run fill up and the only solution is to delete the entire zpool.
이에 대한 내용은 링크를 참조.

http://hub.opensolaris.org/bin/view/Project+nfsv41/
Project gate::
ssh://anon@hg.opensolaris.org/hg/nfsv41/nfs41-gate
Project logistics::
http://hub.opensolaris.org/bin/view/Project+nfsv41/projectlogistics


도움 요청은  IRC.frenoode.net 의 nexenta 채널로.
메일링 리스트는  gnu-sol-discuss@opensolaris.org



조금만 더 살펴보면, 이 pNFS 는 다양한 방법으로 각 스토리지 벤더에서 지원하고 있다. 이중 여기서 소개된 nexenta 의 opensolaris 진영에서도 infiniband 와 같은 고속 통신을 사용하여 pNFS over RDMA 와 같은 방법으로 구현하는 것도 있다.  물론 NetApp 의 OnTAP 에서도 그들의 독자적인 방법으로 기능을 제공한다.

주요한 것은 어떠한 파일 시스템을 사용하던, 이제는 데이터가 페타 또는 그이상의 크기를 필요로 하는 곳이 많아지게 되므로, 이와같은 병렬화된 파일레벨의 공유시스템 및 이를 사용했을때 발생하는 성능상의 이슈를 어떠한 방식의 캐싱으로 풀어나갈 것인가, 어디에 적용해야 할 것인가 등이 주요한 고민으로 작용 할 것 같다.

언제나 고민되는 스토리지다. 

각 벤더의 링크들.
http://www.panasas.com/products/pnfs-resource-center.php
http://www.netapp.com/kr/communities/tech-ontap/pnfs-ko.html
http://www.almaden.ibm.com/storagesystems/projects/pnfs/


( younjin.jeong@gmail.com , 정윤진 )


+ 요것은 초큼 다른 내용이지만, MPI-IO 관련 내용.
http://www.mcs.anl.gov/~thakur/papers/mpi-io-noncontig.pdf

MONO Environment on Ubuntu

Techs
( younjin.jeong@gmail.com , 정윤진 )


최근에 웹지니 횽아가 모노로 이것저것 가지고 노는 바람에 본의 아니게 모노 구동환경의 셋업이 자주 필요 해 질 것 같아 일부러 삽질 한번 해 보았다.


Mono Logo





컴파일 시간을 제외 하면 설치 자체는 매우 간단 하므로, 그냥 주욱 커맨드를 쓰도록 한다.

물론, 우분투 설치를 이야기 해 주진 않는다.  @_@;; 
이제 막 설치가 끝난 서버 버전의 Clean 한 시스템이 준비 되었다 친다.

# Package Install
root@mono:~# apt-get update
root@mono:~# apt-get dist-upgrade
root@mono:~# apt-get install gcc pentium-builder build-essential bison gettext pkg-config
root@mono:~# apt-get install libglibmm-2.4-dev libglibmm-2.4-doc libglib2.0-0-refdbg libglibmm-2.4-1c2a
root@mono:~# apt-get install apache2 apache2-dev

# Source downloads from http://ftp.novell.com/pub/mono/sources-stable/
root@mono:~# mkdir /usr/src/apps
root@mono:~# cd /usr/src/apps
root@mono:/usr/src/apps# wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.6.4.tar.bz2
root@mono:/usr/src/apps# wget http://ftp.novell.com/pub/mono/sources/xsp/xsp-2.6.4.tar.bz2
root@mono:/usr/src/apps# wget http://ftp.novell.com/pub/mono/sources/mod_mono/mod_mono-2.6.3.tar.bz2

# Extract tarball
root@mono:/usr/src/apps# tar xvjf mono-2.6.4.tar.bz2
root@mono:/usr/src/apps# tar xvjf xps-2.6.4.tar.bz2
root@mono:/usr/src/apps# tar xvjf mod_mono-2.6.3.tar.bz2

# Build MONO
root@mono:/usr/src/apps# cd /usr/src/apps/mono-2.6.4
root@mono:/usr/src/apps# ./configure --prefix=/usr/local   # if you wants any customize, type --help and add configure options
root@mono:/usr/src/apps# make && make install

# Build xsp
root@mono:/usr/src/apps/xsp-2.6.4# ./configure --prefix=/usr/local/ 
root@mono:/usr/src/apps/xsp-2.6.4# make && make install

# Build mod_mono  for apache
root@mono:/usr/src/apps/mod_mono-2.6.3# ./configure --prefix=/usr/local --with-apr-config=/usr/bin/apr-config

# Add mod_mono.conf to apache2.conf  ( or sites that you want to run MONO )
root@mono:/etc/apache2# echo "Include /etc/apache2/mod_mono.conf"  >> /etc/apache2/apache2.conf
root@mono:/etc/apache2# tail apache2.conf

# Reload apache
root@mono:/# /etc/init.d/apache2 restart

실제 커맨드를 사용하는건 매우 간단하고, 복잡한 구성이 아니기 때문에 금방 설치가 가능하다.
필요한 경우는 위의 커맨드로 스크립트를 작성해도 별 무리가 없겠다.

서비스 용의 박스 세팅은 조금 더 신경을 써 주어야 하는 부분이 있겠지만, VM에 올려서 가볍게 사용하기엔 충분하다고 본다. 물론, 서비스 컨텐츠의 분산을 노리는 다른 웹 서버와의 조합도 충분히 가능하겠지만.

다음은 WAS로 사용될 수 있는 아주 간단한 서버 구성이 되겠다.

--- Request --->  Nginx ---> Apache with mono ---> DB
                              |                          |
                              +    NFS Storage    +

static contents handled by Nginx
dynamic contents handled by Apache


리눅스에 입문하여 모노로 닷넷 코드를 돌리고자 하시는 웹 개발자 분들께 도움이 되길 바란... ; 퍽;

+ 추가 내용
다음의 링크 참조
http://www.codeproject.com/KB/cross-platform/introtomono2.aspx
http://www.mono-project.com/Main_Page
http://www.mono-project.com/Mod_mono



( younjin.jeong@gmail.com , 정윤진 )

업무와 열정사이

Stories

( younjin.jeong@gmail.com , 정윤진 )

회사라는 조직생활을 한 지도 어느덧 10년이 되어간다.  그 동안 이런 회사도 있고 저런 회사도 있었지만, 동네 구멍가게 같은 회사 말고는 매출이 안나서 고생하는 회사에 있어 본 적은 별로 없는 듯 하다.

그도 그럴 것이, 시스템이라는 포지션이 안정되게 회사 안에서 자리잡은 IT 기업도 별로 없게 마련이거니와, 대부분의 회사에서 개발자 또는 조직 관리자가 서버 몇대 정도는 "정" 타이틀 달고 대충 꾸려나가는 경우가 많고, 시스템 엔지니어가 필요하기 시작한 지점은 이미 고객이든 매출이든 뭔가 사용량이 증가해서 이제는 도무지 버틸 수 없는 경우가 많기 때문이 아니었을까 하고 나름 결론을 내려 본다.

이제 또 한번의 턴을 끝내고 돌아서려고 마음을 먹었는데 문득, "업무와 열정사이" 라는 타이틀이 떠오르게 되었네.

언제나 나는, 장애에 대해 전투적으로 대처하고 해결 못하면 서비스 말아먹는다는 각오와, 또 장애가 터질때를 대비해서 사전에 삽질해 두는 과정에 항상 무게를 두며,  장애 또는 무언가 안되는 일이 있을때는 그 안되는 것을 빨리 전파해야 보다 많은 사람들이 머리를 굴려 문제를 해결하기 좋게 끔 만들 수 있다는 나만의 일처리 규칙을 세워놓은게 있다.

항상 이 방법에 따라 어딘가에서 일을 하지 않고 있을 때에도 무언가에 매달렸으며, 어딘가에서 일을 하고 있을 때에는 그들의 문제를 해결하고, 서비스 구조를 개선하기 위해 무던히 입방정을 떨고 문서를 만들어 당위성을 입증하고자 했었지만.  디스플레이 능력의 부족인지 내 자신이 그들에게 믿음을 충분히 주지 못해서 인지는 모르겠지만, 최근들어 한계에 맞딱드리게 되었던 것이,
 
"그거 그렇게 하려면 고객한테 이렇게 이렇게 해야 하는데 고객들은 그거 안할 꺼야"
"그거 해 드리려면 저희 지금 개발 스케줄이 이런데 그게 딜레이 될 것 같은데요."
"말씀하신 시스템만 사용하는 방법은 글쎄요.." 
"그거는 저희가 할 수 있는 일이 아닌 것 같은데요." 

나는 내가 제안 하는 분야에 대해 저들보다는 전문가라고 생각해서, 그렇게 하는 것이 고객도 좋고 우리도 좋을 것이다 라는 기준으로 준비해서 가져가면 의례 나오는 답변들.  하나 같이 현상에 대한 문제에 대해 해결책이라고 제시해서 들고 가면 그냥 아무 대안도 없이 브레이크를 거는 전형적인 답변들이다.  물론 브레이크는 브레이크 자체가 가진 순기능(이를 테면 사업 규모가 제법 크게 진행되거나 할 때, Warning 의 측면 같은 부분 ) 도 있기는 하지만, 장애 상황에서 또는 장애가 거듭 발생하는 상황에서의 저런 말같지도 않은 브레이크는 치가 떨리는 경우가 많았다.

뭐, 이 부분에 대해서는 이제 나는 수긍한다. 
그들과 나는 살아가는 방법이 다르므로, 또는 함께 서비스를 만들어가는 요원으로서의 공감대 형성은 고사하고, 서비스 운영 주체의 밥그릇에 대한 철통경계로 여념이 없으신 분들이기에.
그러한 "성실"이라는 가치로 무장하고  출퇴근 시간 칼같이 지키며 회사서 사주는 저녁밥 잘 챙겨먹고 8시 언저리 퇴근을 즐기는 무리와 애초에 비교 당하고 싶은 생각은 없지만  그래도 이런 사람들 하고도 일을 할 수 있어야 진정한 조직생활이다 라는 일념으로  "이거 이렇게 하면 당신한테도 좋아요" 를 남발하고 구슬리고 얼르며 20대 후반과 30대 초반을 맞았다.

다만 내가 열이 받는 것은, 나의 열정에 대해 고작 30센티미터 자를 들이대는 것이다.
실력이나 능력은 떨어질 지 모르겟지만, 적어도 나는 내 밥그릇 지키는 것 보다 전체 밥그릇을 키우는게 모두가 더 배부를 수 있는 것이다는 사실을 체험했기 때문이고,  내 위에는 항상 그 위가 있다는 진리도 알고 있다.

그렇기에 해외 고객/국내 고객을 모두 만족시키며, 제품으로서 제 역할을 하게끔 하는 내 전문 분야에 대한 조언/수정방향 또는 질타에 대해 1년 넘게 아무것도 반영된게 없고 또 아무것도 이루어 진게 없는 것이, 또 그러한 실망 및 여러가지 기타 개인적 사정으로 인해 퇴직하게 되는 것에 대해 내 열정이 식어서 라고 매도하지 말아라.

"성실" 이라고 하면 그건 내가 수긍 해 줄 수 있겠다.  다만, 어디가서 사람 잡고 물어봐라.
글로벌 사업하는데서 시스템 1명 두고 내부관리 서비스관리 해외 고객사 시스템 다 해 주면서,
그 1명한테는  적어도 신입 3명분 급여는 주고 탓을 해도 해야지 않겠는가.  

원래 나는 설치 엔지니어 따위가 아닌데 그렇게 밖에 일할 수 밖에 없는, 그런걸 원하기 때문에 해 주었으면
내 기술에 대한 기회비용 및 감가상각 정도는 바라지도 않는다.


그냥 나간다고 욕은 하지 말아라.
그냥 쿨하게 "그동안 싸게 잘 썼는데 아쉽다"  해라.


적어도 너희들은 2년간은 시스템 걱정없이 돈 벌었지 않냐.

( younjin.jeong@gmail.com , 정윤진 )

Final Fantasy X Piano Collection - To Zanarkand

Stories

( younjin.jeong@gmail.com, 정윤진 )

원래 예능에 더럽게 소질이 없는터라 피아노나 리코더 혹은 단소 때문에 학창시절에 맞아 본 적은 있어도 감상에 젖어본 적은 거의 없는 이 삭막한 인생에 아련한 추억 하나가 떠오르는 바람에 급작스럽게 피아노를 배우고 싶어졌다.

Play Station 과 같은 콘솔 게임기로는 그저 위닝이나 하고 철권이나 하는 뭔가 내기 대결용 게임만이 전부라고 생각할 때, 까까머리 군생활 시절 어느새인가 모든 게임잡지 지면을 장식하고있던 Final Fantasy X 는 아름다운 화면과 절절한 스토리등에 대한 각종 오덕스런 기자들의 찬양으로 도배가 되어 해묵은 고정관념을 깨고 나도 한번? 하면서  FFX 에 대해 호감을 갖기 시작했다.

Final Fantasy X



사격인가 대전차 화기인가 아무튼 뭔가 군대서 5일짜리 휴가를 받아 지하철로 집에 가던 내 머릿속엔 온통 FF X 에 대한 생각 뿐.  집에 도착하자마자 친구에게 PS2 를 강탈하여 FFX를 거짓말 안하고 4박 5일 휴가 중 부대 왔다갔다 하는 시간 빼고 2박 3일을 밤새고 했다.  물론, 짧은 시간에 엔딩을 보아야 했으므로 액션리플레이의 마법과 같은 힘을 빌린 것은 부정하지 않겠다.



Zanrkand



폭풍간지 아론 사마



어딘가의 폐허가 된 도시에 울적한 군상들이 앉아서 청승을 떠는 도중 주인공의 "내 이야기를 들어봐봐좀" 하며 시작된 이 게임은 갖은 갈굼과 산악행군 구보로 단련된 군바리의 눈밑에 다크서클을 턱까지 내려오게 하는데 전혀 부족함이 없었다.  마치 내 여자친구 같던 주인공과 아름다운 세상, 게임속의 존재가 현실이 되어 버린 것 같은 착각속에 빠져 3일을 살고 난 후에는  이미 나는 남자친구를 잃은 슬픔을 참고 살아가는 여주인공과 함께 현실을 공유하는 군바리가 되어있었다.  아....  휴가 복귀 못할 뻔 했지..


FFX 팬의 그녀, 유우나




이후 군생활은 온통 FFX 와 FF X-2 에 관한 잡지들로 지루함과 싸워내고 이겨내어 무사히 전역하게 되었고 이에 지대한 영향을 끼친 그녀를 위해 잠시 묵념..;; 은 아니고.


아무튼 그시절 그렇게나 큰 감동이었던 본 게임의 OST가 최근들어 Piano Collection 으로 발매 되었다는 사실을 깨닫게 되었다.  그리고, 이 모든 곡들 중  To Zanarkand 라는 곡이 피아노로 배우고 싶은 그 곡.


필수 구매 핫 아이템




돌이켜 보면 그까짓 게임이 무어 그런 대수겠냐고 할 사람들도 많겠지만, 이 Square Soft 가 만들어 내는 본 FF 시리즈는
화려한 비주얼과 각종 전문가의 사운드효과, 그리고 그 OST가 백미다.  그런 요소들이 '스토리'와 조합되어 하나의 세상을 만들어 낼 때, 영화보다 심각한 수준의 감동이 ....  뭐 그런게 있다.






진정한 삶의 고됨에 눈 뜨기전 접했던 사랑이라는 모호한 감정을 아련하게나마 어린시절에 접할 수 있게 해 주었던 음악.
듣기만 해도 눈물이 쏟아질 것 같던 감성시절은 지났지만,  얼마전에 구입한 YDP-140 으로 신나게 연주 해 주어야겠다.

 

현금박치기 피아노




근데, 피아노 학원 무작정 가서 악보들고 이것만 칠 수 있게 해 주세요  하면 되려나 ;;


( younjin.jeong@gmail.com , 정윤진 )


+ youtube 에서 본 곡의 강좌를 찾아냄  후핫





링크는 ( http://www.youtube.com/watch?v=iTHuKTMl2rg&feature=related )

불꽃 연습!!!!



NAPI on Linux

Techs

( younjin.jeong@gmail.com , 정윤진 )

이제는 오래되어 버린 기술이지만, 2006년 경의 2.6.1x 대 커널에서의 NAPI 사용으로 인한 시스템 부하 절감 및 네트워킹 성능 향상은 경이로운 것이었다.  무지막지한 인터럽트 증가로 인하여 static 파일을 서비스 하는 웹 서버가 죽을똥 살똥 하던 모습이란.

언젠가 한번은 적어야지 했는데, 마치 Memory Hole 관련 문제처럼 언젠가는 잊어버리지 않을까 싶어, 생각 난 김에 포스팅 한다.

오랜만에 보는 HOW-To 문서를 번역할 예정이며, 요새 커널 버전과는 매우 동떨어져 있지만.. 뭐 그래도 잘 설명 되었으니까.   문서 원본은 아래의 링크에서 참조 할 수 있다.
( http://www.cookinglinux.org/pub/netdev_docs/napi-howto.php3.html )


NAPI 에 대해 자세한 설명은, 아래의 더보기를 통해 보시도록..
(번역이 허접해도 용서를..)




결국, 이런저런 내용이 많지만, NAPI 의 핵심은 다음의 몇가지로 압축 될 수 있다.

1)
고부하 상태건 저부하 상태건 패킷의 유입으로 인한 하드웨어로 부터 ( 하드웨어 드라이버로 부터) 의
직접적인 인터럽트는 시스템에 심각한 부하를 일으킬 가능성이 있다.

2)
따라서 이와 같은 인터럽트는 NAPI 및 기타 하드웨어 ( NIC )의 인터럽트 제어를 통해 부하율을 낮출 수 있으나,
다소간의 지연이 발생 할 수 있다.

3)
NAPI 가 동작하는 기본적인 방식은 Polling 이며, 이를 쉽게 말하면 유입된 패킷이 발생할때 마다 인터럽트 하여
가져오는 것이 아니라 드라이버가 원하는 때에 적절한 스케줄링을 통하여 폴링으로 한꺼번에 가져온다.

4)
따라서 이러한 패킷을 저장하기 위한 공간이 필요하며, 이러한 공간이 포화가 된 경우/ 또는 시스템에서 처리
불가능한 경우 등에 대한 대비가 필요하다.

5)
NAPI 는 기본적으로 rx ring 에 동작한다.


로 압축 할 수 있겠다.


번역한 문서가 아주 옛날 버전이기는 하지만, 최신 문서 소개해 봐야 다 기본 내용은 거기서 거기.

실제 netpipe 등과 같은 툴을 통해 packet storming 이나 하드웨어 레벨의 테스팅을 하다 보면
쉽게 접하고 튜닝이 가능한 부분이며, 힘들어하는 시스템에 idle 을 조금이나마 안겨 줄 수 있는
방법이라 하겠다. 배포판 또는 드라이버별로 적용이 되고 안되는 등의 차이가 있는 듯 하니
궁금하면 dmesg 를 확인 해 보길 바란다.


오늘은 이만..


( younjin.jeong@gmail.com 정윤진 )