2009/11/27

솔라리스 이진 호환성 힘의 장단점


썬은 유난히도 애플리케이션의 호환성을 중요하게 생각해온 회사였다. 사실 경쟁사로 있는 H혹은 I사는 새 플랫폼이 나오면 같은 CPU 아키텍쳐를 상속받은 플랫폼이면서도 새로 컴파일을 요구하는 경우가 대부분이었다. 반면에 솔라리스는 내가 봐온 10여년째 이진 화일 호환성을 주요 장점으로 내세워 왔다. 동시에 타 경쟁사의 컴파일 어게인 정책에 대해서는 매우 후진적임을 늘 강조해왔다고 할 수 있다.

개발자로서의 경험을 가진 나로써는 '새장비 들어왔을 때 컴파일 좀 다시 한번 한다고 해서 문제가 될까 ? ' 하고 생각한 적이 있다. 그러니까, 썬에서 중요하게 여겼던 이진 화일 호환성에 대해서 큰 메릿을 못느꼈던 것이다. 그러다, 시간이 지남에 따라 많은 자신의 주요 업무가 증가하고, 봐야할 장비가 늘어나면서, 혹은 지금은 없어졌지만 예전 코드가 남아 있는 경우에 새로운 장비에 예전 이진 화일을 그냥 사용할 수 있는 것이 얼마나 커다란 생산성을 제공하는 지를 새삼스럽게 깨닫곤 한다. 테스트를 해야한다거나 특정 사실만 확인하면 될 급할 때 컴파일러 준비해야 하고 버젼 확인해되고 컴파일하고 디버깅하고 등등 이런 준비를 한다는 것이 생각보다 커다란 부하임을 느끼게 된 것이다. 만약 이럴때 운영체제가 예전 이진 화일의 호환성을 유지해준다면 그냥 돌려보고 확인하면 되는 경우도 많기 때문이다.
그러다 보니, 나를 포함한 많은 솔라리스 사용자들은 어느새 이런 주요 기능에 젖어있게 됐고 너무나 당연한 기능으로 생각하게 됐다. 그러다 보니, 여기서 발생하는 부작용이 나타났다.

8년째 같은 바이너리를 사용해오고 있는 고객이 있었다. 그 사이에 장비는 종류만 4번 바뀌었다.
어느날 나에게 연락을 해서는 클럭도 높고 새로나온 장비를 샀는데, 빠르긴 한 것 같은데 확 빨라졌다는 느낌을 못 받겠다. 왜 그런지 알 수 있겠나라는 요청을 해오셨다. 사실 이런 경우에는 개발자 컨설팅 서비스를 사셔야만 지원을 받을 수 있는 문제인데, 연간 서비스 비용으로 10억씩 내시는 분들이기 때문에 그냥 컨성팅 해드리기로 했다 ^^;

고객분의 애플리케이션을 확인해봤다. 시스템 사용 상태로 봐선 나쁘진 않았다. 하지만, 업무 시작하는 시간대에 부하가 증가(CPU usage 100%)해서 지연시간이 꽤 길었다가 부하가 떨어지면 정상적인 현상대로 내려오는 상황이었다.


사실 언뜻 생각해보면 시스템의 성능 대비 부하가 많아서 생긴 지극히 정상적인 상황이라고 할 수 있다. 그러나, 이런 현상에서 시스템의 업무 부하율을 평균 50% 이하로 유지해야 하는 고객의 입장에서는 장비를 추가로 구매해야 하는 상황이었다.

사실 벤더에서 일하는 엔지니어의 입장에서 보면 그냥 장비를 추가 구매하실 것을 권고하는 것이 맞을 수 있겠다 싶었다. 그런데, 고객분은 내부적으로 그럴 입장이 아니었던 모양이다. 내부적으로 테스트를 충분히 하셔서 새 기종이 적정 기종이라고 주장해왔고, 새로 구매한 플랫폼의 개수가 적정수라고 보고했던 것이다.

그런데, 막상 부하를 올려보니 위 그림 처럼 나온 것이다. 따라서, 추가 구매를 하면 당신 자신이 매우 곤란한 입장이고, 추가 구매를 안하자니 서비스가 불안한 상황이 된 것이다. 그래서 나를 부르게 되었던 것이다.

나는 일단 개선의 여지가 있는 지 확인해보기로 했다. 마침, 서비스 팀에서 이제는 상당히 보편화된 dtrace를 이용해서 애플리케이션의 락(lock)을 분석한 보고서가 있었다. 내 시간을 많이 덜어준 셈이다.

아래는 dtrace 결과를 통해서 보고된 내용중 일부이다.

===== Count ========

_write 410

.....

_save_nv_regs 2100

strcmp 5594

memcpy 8572

====== Time [Nano Second] ========

memcpy 51474200

_write 204638300

__pollsys 3209242900

----------- dtrace end ---

보고서를 보니 해당 서비스 애플리케이션이 memcpy, strcmp를 많이 호출하는데다 소요 시간이 가장 긴 부분임을 알 수 있었다. '음... 메모리 오퍼레이션을 개선해볼 수 있겠는데' 라는 생각이 즉각적으로 들었다.

사실 해당 애플리케이션은 컴파일된지 근 8년이나 되는 오래된 애플리케이션이었다. 이전에 있던 플랫폼은 SF4900인데 반해 새 장비는 M3000 장비였다. 그렇다면 같은 스팍 구조의 CPU이긴 하지만 두개의 플랫폼은 클락을 제외하곤 캐쉬에서 큰 차이가 있다.

너무나 당연하게 캐쉬가 다르면 메모리 오퍼레이션에서 상당한 오버헤드가 만들어질 수 있다. corestat이나 cpustat으로 더 자세하게 분석할 수 있겠지만 확신이 들었기에 그런 과정을 생략하고 보유하고 있는 애플리케이션의 재컴파일을 요구했다. 썬스튜디오 12U1으로 컴파일했다.

단순히 재컴파일만 했는데 다음과 같은 놀라운 결과를 보였다. 부하가 몰렸을 때에도 고작 100% 밑을 돌았고, 전체 평균으로는 50%를 하향하는 매우 안정적인 상황으로 반전되었다. 고객은 당연히 놀라워하고 기뻐했다.


사실 이런 경우는 매 새로운 플랫폼이 들어올때마다 재컴파일을 했으면 생기지 나타나지 않았을 문제이다. 그러나, 현업에서는 몰리는 부하도 감당하기 힘든데, 장비가 들어올때마다 형상관리를 새롭게 변경하는 것도 쉬운일이 아닌 것이다. 그래서 솔라리스의 이진 화일 호환성 지원은 빛을 발해왔던 것이다. 그러나, 위와같은 부작용도 간혹(8년에 한번정도) 발생하긴 한다.

좋다고 해야할 지 나쁘다고 해야 할 지 헷갈릴 수도 있겠다.

간혹 고객분들 중에는 나름 테스트를 하기 위해서 여러 장비를 놓고 테스트를 하는 경우가 있다. 경쟁사에서는 무조건 재 컴파일을 요구해서 재컴파일을 해서 테스트하시고, 솔라리스에서는 잘 도니까 그냥 테스트하신단다. 얼핏 들으면 썬에 매우 우호적으로 들리는데 결과가 솔라리스에 불리하게 나오면 짜증내신다.... 컴파일할 때 같이 하셔서 하시지...

위 컴파일 시 사용되었던 컴파일러는 썬스튜디오 12 업데이트 1이다.
적용했던 컴파일 옵션은 다음과 같다.

32bit:
CFLAGS= -g -fast -xO3 -xtarget=native -D_POSIX_PTHREAD_SEMANTICS

64bit:
CFLAGS= -g -fast -xO3 -m64 -xtarget=native -D_POSIX_PTHREAD_SEMANTICS

여기에서 중요한 옵션은 -fast 옵션이며, 그외 -xO3는 이기종 스팍 플랫폼간 호환성(플로팅 포인트 연산간 호환성)을 위해서 덜 최적화하는 옵션이다. -xtarget 옵션은 -fast 매크로에 포함되어 있는 것이나 native 플랫폼 최적화를 명시한다는 의미에서 넣어졌다. 만약 해당 최적화가 다른 구 스팍 플랫폼에서 호환성 문제를 야기한다면, -xtarget=native를 -xtarget=generic 으로 변경해서 컴파일해야 한다.

2009/10/19

사용 예를 통한 Dtrace 학습

솔라리스 시니어 엔지니어인 Ricky의 글입니다.
몇가지 사례를 통한 유용한  Dtrace 스크립트와 어떻게 해석했는 지 에 대한 과정이 있습니다.

특이한 것은, 매우 일찍이 멀티코어/하드웨어 스레드 개념을 발표한 썬 이후로 하드웨어 멀티 스레드개념이 보편화 되어 가고 있는 시점에서 보면, 멀티 스레드 상에서 어떤 코딩이 멀티 코어 시스템을 잘 활용할 수 있는 지, 어떤 코딩이 시스템에 오버헤드를 많이 주는 지등이 점점 명료해지고 있습니다.

아래의 사례를 기준으로 본다면, memset을 쓰는 것보다 각각의 byte에 0으로 초기화하는 것이 빠르고, condition variable 사용시에는 broadcast보다 condition signal을 사용하는 것이 스레드가 많아질 수록 생기는 오버헤드를 줄여준다는 것을 dtrace로 보여주고 있습니다.  또한 스레드가 많은 경우에는 메모리 할당시 슬라브 혹은 멀티스레드 전용 메모리 할당 기법을 쓰는 것이 매우 효율적이라는 것도 보여주고 있습니다.

애플리케이션 개발자들에게 많은 것을 시사하는 것이라고 할 수 있습니다.

Tutorial: DTrace by Example


2009/07/16

zfs의 화일 시스템 에러(permanent error)와 패키지 수정 (pkg fix)

최신 버젼의 zfs를 쓰면서 우연히 알게 된 것은 화일 시스템의 오류가 왕왕 생긴 다는 점입니다.
아마도, 랩탑이기 때문에 파워가 없어서 그냥 꺼졌거나 하면서 생긴 것으로 보이는데.. 생각보다
이런 오류가 생각보더 훨씬 자주 나타난다는 게 약간 맘에 걸립니다. 이게 정상인지..

간혹 fmstat나 zpool을 보면 아래와 같이 오류가 발생하는 경우가 있습니다.

$ pfexec zpool status -xv
  pool: rpool
 state: ONLINE
status: One or more devices has experienced an error resulting in data
    corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
    entire pool from backup.
   see: http://www.sun.com/msg/ZFS-8000-8A
 scrub: scrub completed after 4h46m with 6 errors on Wed Jul 15 20:19:19 2009
config:

    NAME        STATE     READ WRITE CKSUM
    rpool       ONLINE       0     0     7
      c5d0s0    ONLINE       0     0    55  291K repaired

errors: Permanent errors have been detected in the following files:

        rpool/export/home/bhkim:<0x2d071>
        rpool/ROOT/opensolaris-2@install:/usr/lib/amd64/libcspi.so.0.10.11
        rpool/ROOT/opensolaris-2@install:/usr/bin/w3m
        rpool/ROOT/opensolaris-2@install:/usr/bin/what
        rpool/ROOT/opensolaris-2@install:/usr/bin/wracct
        rpool/ROOT/opensolaris-2@install:/usr/bin/wtpt

오류라고 나온 화일을 실행시도 해봤더니, 정말 I/O 에러라고 나옵니다. ㅡㅡ;

bhkim@vaio-bhkim:~/MyVideos$ wracct
bash: /usr/bin/wracct: I/O error

패키지 수정을 시도해야 겠습니다. 일단 해당 화일이 어떤 패키지에 속하는 지 알아야 하는데 다음과 같이해서 알아낼 수 있습니다.
#pkg search /usr/bin/wracct
SUNWcs라는 것을 얘기해주는데, 결과가 길어서 여기서는 생략합니다.

일단, 오류로 나온 다른 화일의 패키지로 검사를 해봤습니다.
#pkg fix SUNWgnome-a11y-libs

#
엥... 아무런 무언가가 없습니다. 오류가 없이 verify 했다는 얘기입니다.
여기서 오픈 솔라리스 에서 2% 안타까운 것은 zfs에서 해당 화일이 오류가 있다고 나왔다면
pkg 에서도 오류임을 자동으로 감지해서 fix할때 fix해주었으면 하는데, pkg는 화일의 목록만 검사하는 듯 하군요.
오류 없다고 지나가는 것을 보니까 말이죠.

그렇다면, 해당 화일을 삭제하고 fix를 시도하면 감지할 것으로 예상하고 이번에는 실제 작업 대상 패키지에서 작업해봤습니다.

$ pfexec bash
# rm /usr/bin/wracct
일단 삭제했습니다.

# pkg fix SUNWcs
Verifying: pkg:/SUNWcs                                          ERROR  <--- 오.. 역시 에러가 나오네요.
    file: usr/bin/cat
        Warning: package may contain bobcat!  (http://xkcd.com/325/)   ;; 근데 뭔 에러가... 이리 많지 ㅡㅡ;
        file: var/spool/cron/crontabs/root        ..... --
        Group: 'root' should be 'sys'
        file: etc/nsswitch.conf                   ..... ||
        Group: 'root' should be 'sys'
        file: usr/bin/wracct                      ..... //             ;; 아하.. 화일이 없음을 감지했습니다.
        File does not exist
        hardlink: etc/rc2.d/S82mkdtab             ..... //
        No such path etc/rc2.d/S82mkdtab
Created ZFS snapshot: 2009-07-16-00:42:02         ..... //             ;; 스냅샷을 찍어주고 수리들어가네요.
Repairing: pkg:/SUNWcs                                      
PHASE                                          ITEMS
Indexing Packages                            481/670




2009/07/15

죽어버린 X-window (X window crash)

오픈 솔라리스 2009.06 버젼으로 업데이트해서 잘 사용하고 있었습니다.
너무 문제가 없어서 그랬는지, 어제는 악마의 속삭임에 빠져서, 이것 저것 업데이트를 했습니다.
pkg로 업데이트를 하면 괜찮았을 텐데, 별개로 컴파일해서 인스톨하고 했습니다.

제가 설치한 화일들은 잘 돌은 듯 했습니다.

문제는 오늘 발생. 모니터를 붙여서 화면 클로닝으로 설정하려고 했습니다. nVidia configuration으로 평소에 하던 대로 아주 편하게 했습니다. 그런데 이게 웬걸.. 화면 구성을 하고 apply를 누르는 순간 X-window가 죄다 없어지고, 텍스트 콘솔 화면이 잠깐 보였다고 다시 재로그인하는 화면으로 돌아옵니다.

여러 창으로 작업을 하던 상황에서 이렇게 되니 당황스럽습니다.  일단, X server가 시그널 받아서 죽는 것 같다는 느낌이 듭니다. 그런데,  명령어 창을 띄워야 뭘 live로 추적해볼 텐데.. 윈도우즈가 죽어버리니.. 어쩌나 하는 생각을 하게 됐습니다. 급기야, 'dtrace를 쓸 수 있나? ' 하는 생각에 이르렀습니다.

마침 /opt/DTT 디렉토리에 Dtrace Toolkit이 설치되어 있었습니다.

창을 하나 열었습니다. 그리고 다음처럼 명령을 실행했습니다.
$pfexec dtrace -s /opt/DTT/Proc/crash.d > /var/tmp/crash.report &

마침 Dtrace Toolkit에는 프로세스가 죽을때를 캡쳐해주는 스크립트가 있더군요.
다시 화면 구성을 시도했습니다. 예상대로 또 죽었습니다.  이럴 때 안죽으면 사실 좀 황당한데. 아주 착하게 잘 죽었습니다. ㅡㅡ;

재 로그인을 한 후 /var/tmp/crash.report 화일을 확인해봤습니다.

아~~주 훌륭합니다.  프로세스 죽을 때 이렇게 분석해주는 보고서는 첨 봤습니다.
단지 놀라울 따름입니다.


:/var/tmp$ cat crash.report
Waiting for crashing applications...

-----------------------------------------------------
CRASH DETECTED at 2009 Jul 15 15:47:06
-----------------------------------------------------
Type:    SIGSEGV
Program: Xorg
Args:    /usr/X11/bin/Xorg :0 -depth 24 -nolisten tcp -audit 0 -br -auth /var/lib/gdm/:0\0
PID:     1640
TID:     1
LWPs:    1
PPID:    1639
UID:     0
GID:     0
TaskID:  115
ProjID:  0
PoolID:  0
ZoneID:  0
zone:    global
CWD:     /var/lib/gdm
errno:   0

User Stack Backtrace,
              libglx.so.1`0xfffffd7ffd1c45ae

Kernel Stack Backtrace,
              genunix`sigaddqa+0x5f
              genunix`trapsig+0x119
              unix`trap+0x12a1
              unix`0xfffffffffb8001d9

Ansestors,
    1640 /usr/X11/bin/Xorg :0 -depth 24 -nolisten tcp -audit 0 -br -auth /var/lib/gdm/:0\0
      1639 /usr/sbin/gdm-binary\0
        1351 /usr/sbin/gdm-binary\0
          1 /sbin/init\0
            0 sched\0

Times,
    User:    9182 ticks
    Sys:     8066 ticks
    Elapsed: 209133 ms

Sizes,
    Heap:   43286536 bytes
    Stack:  577536 bytes


보고서에 나온대로 Xorg 서버의 현재 작업 디렉토리로 가봤습니다.  예상대로 core 알을 까놨군요.
보고서 상으로 보면 libglx.so에서 죽었네요. ( libglx.so.1`0xfffffd7ffd1c45ae )

core를 좀 더 확인해봤습니다.
$echo "\$C" | mdb core ; pstack과 같습니다.
/var/lib/gdm# echo "\$C" | mdb core
fffffd7fffdfe450 libc.so.1`_lwp_kill+0xa()
fffffd7fffdfe470 libc.so.1`raise+0x19()
fffffd7fffdfe4b0 libc.so.1`abort+0xd9()
fffffd7fffdfe4d0 0x4c32ba()
fffffd7fffdfe4e0 AbortServer+0x13()
fffffd7fffdfe5d0 FatalError+0xe4()
fffffd7fffdfe700 xf86SigHandler+0xb5()
fffffd7fffdfe710 libc.so.1`__sighndlr+6()
fffffd7fffdfe7a0 libc.so.1`call_user_handler+0x2a7()
fffffd7fffdfe7d0 libc.so.1`sigacthandler+0xc6(b, 0, fffffd7fffdfe7f0)
000000000100c640 0xfffffd7ffd4c43de()
000000000217b910 0()
0000000000001000 0()


고개가 갸우뚱 하네요... 어디서 죽은 거지 ? dtrace 말이 맞는 건가 ?
어드레스 맵을 한번 더 확인해보기로 했습니다.
# echo "\$m" | mdb core
            BASE            LIMIT             SIZE NAME
          400000           5fc000           1fc000 /usr/X11/bin/amd64/Xorg
          60c000           620000            14000 /usr/X11/bin/amd64/Xorg
          800000          6c3b000          643b000 /usr/X11/bin/amd64/Xorg
fffffd7ff52d6000 fffffd7ff54d6000           200000
fffffd7ff6b88000 fffffd7ff6d88000           200000
fffffd7ff6ef8000 fffffd7ff70f8000           200000
fffffd7ff7d46000 fffffd7ff7f46000           200000
fffffd7ff80e8000 fffffd7ff82e8000           200000
fffffd7ff84ec000 fffffd7ff86ec000           200000
fffffd7ff873a000 fffffd7ff893a000           200000
fffffd7ff8ad6000 fffffd7ff8cd6000           200000
fffffd7ff8dc6000 fffffd7ff8fc6000           200000
fffffd7ff9400000 fffffd7ff9442000            42000 /usr/X11/lib/modules/amd64/libfb.so
fffffd7ff9452000 fffffd7ff9454000             2000 /usr/X11/lib/modules/amd64/libfb.so
fffffd7ff9800000 fffffd7ff9801000             1000 /usr/X11/lib/modules/amd64/libfb.so
fffffd7ff9a00000 fffffd7ff9d85000           385000 /usr/X11/lib/modules/drivers/amd64/nvidia_drv.so
fffffd7ff9e85000 fffffd7ff9f1f000            9a000 /usr/X11/lib/modules/drivers/amd64/nvidia_drv.so
fffffd7ff9f1f000 fffffd7ff9f3e000            1f000 /usr/X11/lib/modules/drivers/amd64/nvidia_drv.so
fffffd7ff9ff0000 fffffd7ff9ff1000             1000
fffffd7ffa000000 fffffd7ffa004000             4000 /usr/X11/lib/modules/extensions/amd64/libIA.so
fffffd7ffa014000 fffffd7ffa015000             1000 /usr/X11/lib/modules/extensions/amd64/libIA.so
fffffd7ffa400000 fffffd7ffa401000             1000 /usr/X11/lib/modules/extensions/amd64/libIA.so
fffffd7ffa7f0000 fffffd7ffa7f1000             1000
fffffd7ffa800000 fffffd7ffa809000             9000 /usr/X11/lib/modules/extensions/amd64/libdri.so
fffffd7ffa819000 fffffd7ffa81a000             1000 /usr/X11/lib/modules/extensions/amd64/libdri.so
fffffd7ffac00000 fffffd7ffac01000             1000 /usr/X11/lib/modules/extensions/amd64/libdri.so
fffffd7ffaff0000 fffffd7ffaff1000             1000
fffffd7ffb000000 fffffd7ffb009000             9000 /usr/X11/lib/modules/extensions/amd64/librecord.so
fffffd7ffb019000 fffffd7ffb01a000             1000 /usr/X11/lib/modules/extensions/amd64/librecord.so
fffffd7ffb400000 fffffd7ffb401000             1000 /usr/X11/lib/modules/extensions/amd64/librecord.so
fffffd7ffb7f0000 fffffd7ffb7f1000             1000
fffffd7ffb800000 fffffd7ffb801000             1000 /usr/X11/lib/modules/fonts/amd64/libfreetype.so
fffffd7ffb811000 fffffd7ffb812000             1000 /usr/X11/lib/modules/fonts/amd64/libfreetype.so
fffffd7ffbab7000 fffffd7ffbbff000           148000
fffffd7ffbc00000 fffffd7ffbc01000             1000 /usr/X11/lib/modules/fonts/amd64/libfreetype.so
fffffd7ffbc8b000 fffffd7ffbceb000            60000
fffffd7ffc000000 fffffd7ffccf4000           cf4000 /usr/X11/lib/NVIDIA/amd64/libGLcore.so.1
fffffd7ffcdf4000 fffffd7ffd245000           451000 /usr/X11/lib/NVIDIA/amd64/libGLcore.so.1
fffffd7ffd245000 fffffd7ffd257000            12000 /usr/X11/lib/NVIDIA/amd64/libGLcore.so.1
fffffd7ffd270000 fffffd7ffd2d0000            60000
fffffd7ffd400000 fffffd7ffd540000           140000 /usr/X11/lib/modules/extensions/NVIDIA/amd64/libglx.so.1
fffffd7ffd57d000 fffffd7ffd5dd000            60000
fffffd7ffd5de000 fffffd7ffd63e000            60000
fffffd7ffd63f000 fffffd7ffd6a5000            66000 /usr/X11/lib/modules/extensions/NVIDIA/amd64/libglx.so.1
fffffd7ffd6a5000 fffffd7ffd6a7000             2000 /usr/X11/lib/modules/extensions/NVIDIA/amd64/libglx.so.1
fffffd7ffd6cd000 fffffd7ffd72d000            60000
fffffd7ffd7f0000 fffffd7ffd7f1000             1000
fffffd7ffd800000 fffffd7ffd805000             5000 /usr/X11/lib/modules/extensions/amd64/libdbe.so
fffffd7ffd815000 fffffd7ffd816000             1000 /usr/X11/lib/modules/extensions/amd64/libdbe.so
fffffd7ffd826000 fffffd7ffd86f000            49000
fffffd7ffd8af000 fffffd7ffd90f000            60000
fffffd7ffd910000 fffffd7ffd970000            60000
fffffd7ffd971000 fffffd7ffd9d1000            60000
fffffd7ffda70000 fffffd7ffdad0000            60000
fffffd7ffdaff000 fffffd7ffdb5f000            60000
fffffd7ffdb9f000 fffffd7ffdbff000            60000
fffffd7ffdc00000 fffffd7ffdc01000             1000 /usr/X11/lib/modules/extensions/amd64/libdbe.so
fffffd7ffdcef000 fffffd7ffdd4f000            60000
fffffd7ffdd6c000 fffffd7ffddcc000            60000
fffffd7ffddcd000 fffffd7ffde2d000            60000
fffffd7ffde2e000 fffffd7ffde8e000            60000
fffffd7ffde8f000 fffffd7ffdeef000            60000
fffffd7ffdf0c000 fffffd7ffdf10000             4000
fffffd7ffdf1a000 fffffd7ffdf7a000            60000
fffffd7ffdf90000 fffffd7ffdf98000             8000
fffffd7ffdf9f000 fffffd7ffdfff000            60000
fffffd7ffe000000 fffffd7ffe027000            27000 /usr/X11/lib/modules/extensions/amd64/libextmod.so
fffffd7ffe037000 fffffd7ffe039000             2000 /usr/X11/lib/modules/extensions/amd64/libextmod.so
fffffd7ffe04a000 fffffd7ffe0aa000            60000
fffffd7ffe0b5000 fffffd7ffe1b5000           100000
fffffd7ffe1b6000 fffffd7ffe1b7000             1000
fffffd7ffe1ba000 fffffd7ffe21a000            60000
fffffd7ffe21b000 fffffd7ffe27b000            60000
fffffd7ffe28f000 fffffd7ffe2cf000            40000
fffffd7ffe2d0000 fffffd7ffe2dc000             c000
fffffd7ffe2dd000 fffffd7ffe33d000            60000
fffffd7ffe33e000 fffffd7ffe39e000            60000
fffffd7ffe39f000 fffffd7ffe3ff000            60000
fffffd7ffe400000 fffffd7ffe401000             1000 /usr/X11/lib/modules/extensions/amd64/libextmod.so
fffffd7ffe413000 fffffd7ffe414000             1000
fffffd7ffe424000 fffffd7ffe444000            20000
fffffd7ffe445000 fffffd7ffe4a5000            60000
fffffd7ffe4b7000 fffffd7ffe506000            4f000
fffffd7ffe507000 fffffd7ffe567000            60000
fffffd7ffe568000 fffffd7ffe5c8000            60000
fffffd7ffe5c9000 fffffd7ffe5cd000             4000
fffffd7ffe5cf000 fffffd7ffe6cf000           100000
fffffd7ffe6d0000 fffffd7ffe6d1000             1000
fffffd7ffe6d9000 fffffd7ffe719000            40000
fffffd7ffe730000 fffffd7ffe733000             3000
fffffd7ffe73b000 fffffd7ffe79e000            63000
fffffd7ffe79f000 fffffd7ffe7ff000            60000
fffffd7ffe800000 fffffd7ffe8a3000            a3000 /usr/X11/lib/modules/amd64/libpcidata.so
fffffd7ffe8b3000 fffffd7ffe902000            4f000 /usr/X11/lib/modules/amd64/libpcidata.so
fffffd7ffe912000 fffffd7ffe913000             1000
fffffd7ffe91d000 fffffd7ffe97d000            60000
fffffd7ffe97e000 fffffd7ffe9de000            60000
fffffd7ffe9f0000 fffffd7ffe9f8000             8000
fffffd7ffea12000 fffffd7ffea13000             1000
fffffd7ffea23000 fffffd7ffea24000             1000
fffffd7ffea7f000 fffffd7ffeadf000            60000
fffffd7ffeae0000 fffffd7ffeae3000             3000
/usr/X11/lib/amd64/libXau.so.6
fffffd7ffeaf3000 fffffd7ffeaf4000             1000
/usr/X11/lib/amd64/libXau.so.6
fffffd7ffeb06000 fffffd7ffeb0a000             4000
fffffd7ffeb10000 fffffd7ffeb12000             2000
fffffd7ffeb20000 fffffd7ffeb36000            16000 /lib/amd64/libz.so.1
fffffd7ffeb45000 fffffd7ffeb47000             2000 /lib/amd64/libz.so.1
fffffd7ffeb60000 fffffd7ffeb61000             1000
fffffd7ffeb70000 fffffd7ffebdf000            6f000 /lib/amd64/libm.so.2
fffffd7ffebee000 fffffd7ffebf1000             3000 /lib/amd64/libm.so.2
fffffd7ffec00000 fffffd7ffec01000             1000
fffffd7ffec5e000 fffffd7ffec7f000            21000
fffffd7ffec80000 fffffd7ffec81000             1000
fffffd7ffec90000 fffffd7ffecd6000            46000 /usr/X11/lib/modules/NVIDIA/amd64/libnvidia-wfb.so.1
fffffd7ffece5000 fffffd7ffece7000             2000 /usr/X11/lib/modules/NVIDIA/amd64/libnvidia-wfb.so.1
fffffd7ffed00000 fffffd7ffed01000             1000
fffffd7ffed20000 fffffd7ffed21000             1000
fffffd7ffed30000 fffffd7ffed34000             4000 /usr/X11/lib/modules/input/amd64/kbd_drv.so
fffffd7ffed44000 fffffd7ffed45000             1000 /usr/X11/lib/modules/input/amd64/kbd_drv.so
fffffd7ffed55000 fffffd7ffed56000             1000
fffffd7ffed60000 fffffd7ffed6c000             c000 /usr/X11/lib/modules/input/amd64/mouse_drv.so
fffffd7ffed7c000 fffffd7ffed7e000             2000 /usr/X11/lib/modules/input/amd64/mouse_drv.so
fffffd7ffed80000 fffffd7ffed81000             1000
fffffd7ffedd0000 fffffd7ffedd1000             1000
fffffd7ffee00000 fffffd7ffee01000             1000 /usr/X11/lib/NVIDIA/amd64/libnvidia-tls.so.1
fffffd7ffee11000 fffffd7ffee12000             1000
fffffd7ffee20000 fffffd7ffee21000             1000
fffffd7ffee32000 fffffd7ffee33000             1000
fffffd7ffee54000 fffffd7ffee64000            10000
fffffd7ffee70000 fffffd7ffee71000             1000
fffffd7ffee72000 fffffd7ffee73000             1000
fffffd7ffee82000 fffffd7ffee83000             1000
fffffd7ffee8e000 fffffd7ffee9f000            11000
fffffd7ffeea0000 fffffd7ffeea1000             1000
fffffd7ffeeb0000 fffffd7ffeebd000             d000 /usr/X11/lib/X11/xserver/amd64/libdrm.so.2
fffffd7ffeecd000 fffffd7ffeece000             1000 /usr/X11/lib/X11/xserver/amd64/libdrm.so.2
fffffd7ffeee0000 fffffd7ffeee1000             1000
fffffd7ffeef1000 fffffd7ffeef2000             1000
fffffd7ffeef6000 fffffd7ffeef7000             1000
fffffd7ffef00000 fffffd7ffef01000             1000 /usr/X11/lib/NVIDIA/amd64/libnvidia-tls.so.1
fffffd7ffef12000 fffffd7ffef13000             1000
fffffd7ffef16000 fffffd7ffef17000             1000
fffffd7ffef20000 fffffd7ffef21000             1000
fffffd7ffef30000 fffffd7ffef32000             2000 /lib/amd64/librt.so.1
fffffd7ffef40000 fffffd7ffef41000             1000
fffffd7ffef52000 fffffd7ffef53000             1000
fffffd7ffef60000 fffffd7ffef61000             1000
fffffd7ffef72000 fffffd7ffef73000             1000
fffffd7ffef80000 fffffd7ffef81000             1000
fffffd7ffef90000 fffffd7ffef9c000             c000 /usr/sfw/lib/amd64/libgcc_s.so.1
fffffd7ffefab000 fffffd7ffefac000             1000 /usr/sfw/lib/amd64/libgcc_s.so.1
fffffd7ffefc0000 fffffd7ffefc1000             1000
fffffd7ffefca000 fffffd7ffefcb000             1000
fffffd7ffefd0000 fffffd7ffefe0000            10000
fffffd7ffeff0000 fffffd7ffeff6000             6000
fffffd7fff000000 fffffd7fff001000             1000
fffffd7fff010000 fffffd7fff0d0000            c0000 /lib/amd64/libnsl.so.1
fffffd7fff0d0000 fffffd7fff0d7000             7000 /lib/amd64/libnsl.so.1
fffffd7fff0d7000 fffffd7fff0e0000             9000 /lib/amd64/libnsl.so.1
fffffd7fff0f0000 fffffd7fff101000            11000 /lib/amd64/libsocket.so.1
fffffd7fff111000 fffffd7fff112000             1000 /lib/amd64/libsocket.so.1
fffffd7fff112000 fffffd7fff113000             1000 /lib/amd64/libsocket.so.1
fffffd7fff120000 fffffd7fff121000             1000
fffffd7fff130000 fffffd7fff131000             1000
fffffd7fff140000 fffffd7fff1a5000            65000 /usr/X11/lib/X11/xserver/amd64/libXfont.so.1
fffffd7fff1b5000 fffffd7fff1b8000             3000 /usr/X11/lib/X11/xserver/amd64/libXfont.so.1
fffffd7fff1b8000 fffffd7fff1bb000             3000 /usr/X11/lib/X11/xserver/amd64/libXfont.so.1
fffffd7fff1c0000 fffffd7fff355000           195000 /lib/amd64/libc.so.1
fffffd7fff365000 fffffd7fff371000             c000 /lib/amd64/libc.so.1
fffffd7fff371000 fffffd7fff373000             2000 /lib/amd64/libc.so.1
fffffd7fff375000 fffffd7fff387000            12000
fffffd7fff390000 fffffd7fff391000             1000
fffffd7fff3a0000 fffffd7fff3a1000             1000
fffffd7fff3a3000 fffffd7fff3eb000            48000 /lib/amd64/ld.so.1
fffffd7fff3fb000 fffffd7fff3fe000             3000 /lib/amd64/ld.so.1
fffffd7fff3fe000 fffffd7fff3ff000             1000 /lib/amd64/ld.so.1
fffffd7fffd72000 fffffd7fffe00000            8e000 [ stack ]


core에서 나오는 메모리 맵에서는 base map 400000에서 시작하니, d5c4...  영역을 봤더니
libglx.so 가 맞군요.

NVidia driver 화일이군요... Nvidia를 다시 설치해야 겠군요.

pkg search libglx.so 로 어떤 패키지인가 검색해봤더니... 예상대로
pkg:/SUNWxorg-mesa@7.2-0.111

어떻게 이 패키지만 업데이트 하나 고민하고 있습니다.  차라리 앞으로 롤백을 해야 할까요? 흠...


opensolaris 2009년 6월 에디션의 부팅 직후 메모리 맵입니다.

2G 메모리를 가지고 있는 소니 랩탑에서 오픈 솔라리스 2009년 6월 에디션을 부팅한 직후의 메모리 상태입니다.
ZFS file data 영역과 Anon 영역이 670MB 나 되는 군요... 메모리를 무지 쓰고 있군요... 흠...

/etc/system에서 maxusers=64로 낮춘 상태에서의 로딩입니다. default는 2038인가 정도 했던 것 같습니다.

~# echo "::memstat" | mdb -k
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     132109               516   25%
ZFS File Data               82974               324   16%
Anon                        89869               351   17%
Exec and libs                3657                14    1%
Page cache                  20857                81    4%
Free (cachelist)            10609                41    2%
Free (freelist)            181731               709   35%

Total                      521806              2038
Physical                   521805              2038

~# echo "::kmastat" | mdb -k
cache                        buf    buf    buf    memory     alloc alloc
name                        size in use  total    in use   succeed  fail
------------------------- ------ ------ ------ ---------- --------- -----
kmem_magazine_1               16   3356   3514     57344B      3356     0
kmem_magazine_3               32   3550   3625    118784B      3573     0
kmem_magazine_7               64   6246   6262    413696B      6246     0
kmem_magazine_15             128   3707   3720    491520B      3879     0
kmem_magazine_31             256      0    180     49152B       166     0
kmem_magazine_47             384      0    140     57344B       131     0
kmem_magazine_63             512      0    161     94208B       155     0
kmem_magazine_95             768     54     55     45056B        54     0
kmem_magazine_143           1152      0      0         0B         0     0
kmem_slab_cache               72  78113  78155   5820416B     78121     0
kmem_bufctl_cache             24 273145 273212   6701056B    273195     0
kmem_bufctl_audit_cache      192      0      0         0B         0     0
kmem_va_4096                4096  46354  46368 189923328B     46368     0
kmem_va_8192                8192   1407   1408  11534336B      1407     0
kmem_va_12288              12288    275    280   3670016B       275     0
kmem_va_16384              16384  10924  10928 179044352B     10924     0
kmem_va_20480              20480    360    360   7864320B       360     0
kmem_va_24576              24576     66     70   1835008B        66     0
kmem_va_28672              28672    500    500  16384000B       500     0
kmem_va_32768              32768     45     48   1572864B        45     0
kmem_alloc_8                   8  32208  32695    266240B    369157     0
kmem_alloc_16                 16  20271  22088    360448B    133928     0
kmem_alloc_24                 24  10139  11690    286720B     70094     0
kmem_alloc_32                 32  19903  20875    684032B   2369647     0
kmem_alloc_40                 40  19053  22600    925696B    477081     0
kmem_alloc_48                 48   6254   8466    417792B    137913     0
kmem_alloc_56                 56  10852  13348    770048B   2372840     0
kmem_alloc_64                 64  10946  13020    860160B   1266893     0
kmem_alloc_80                 80  15931  16150   1323008B    121931     0
kmem_alloc_96                 96  18972  20418   2039808B     96164     0
kmem_alloc_112               112 112438 113435  13275136B    130292     0
kmem_alloc_128               128   6882  11439   1511424B    262361     0
kmem_alloc_160               160   3587   3875    634880B     16150     0
kmem_alloc_192               192    533    580    118784B   2287251     0
kmem_alloc_224               224   1191   7089   1708032B     74335     0
kmem_alloc_256               256   5266   6330   1728512B    153107     0
kmem_alloc_320               320   4226   7956   2715648B    214767     0
kmem_alloc_384               384    562    570    233472B     12381     0
kmem_alloc_448               448    143    152     77824B      6150     0
kmem_alloc_512               512    386    392    200704B      5727     0
kmem_alloc_640               640    364    378    258048B      5083     0
kmem_alloc_768               768     86     95     77824B     37586     0
kmem_alloc_896               896     74     81     73728B      2172     0
kmem_alloc_1152             1152    261    280    327680B    247575     0
kmem_alloc_1344             1344     80     90    122880B     82802     0
kmem_alloc_1600             1600     26     30     49152B       921     0
kmem_alloc_2048             2048    456    478    978944B     10930     0
kmem_alloc_2688             2688    695    711   1941504B      4488     0
kmem_alloc_4096             4096    217    865   3543040B     15630     0
kmem_alloc_8192             8192    649    653   5349376B     14609     0
kmem_alloc_12288           12288     64     69    847872B      1259     0
kmem_alloc_16384           16384     39     41    671744B       360     0
kmem_alloc_24576           24576     46     51   1253376B       211     0
kmem_alloc_32768           32768     33     36   1179648B       128     0
streams_mblk                  64   2770   2790    184320B    266835     0
streams_dblk_16              128    105    186     24576B    181534     0
streams_dblk_80              192    765   1040    212992B    573591     0
streams_dblk_144             256      1     90     24576B     13159     0
streams_dblk_208             320    211    480    163840B     12046     0
streams_dblk_272             384      0    280    114688B     40931     0
streams_dblk_336             448      1     16      8192B      1503     0
streams_dblk_528             640      0     18     12288B      3222     0
streams_dblk_1040           1152      0     49     57344B      3243     0
streams_dblk_1488           1600      1     10     16384B       594     0
streams_dblk_1936           2048      2     12     24576B       622     0
streams_dblk_2576           2688      0     12     32768B      2884     0
streams_dblk_3856           3968      0      4     16384B       508     0
streams_dblk_8192            112    511    558     73728B     23371     0
streams_dblk_12048         12160      0      4     49152B       396     0
streams_dblk_16384           112      0     31      4096B       147     0
streams_dblk_20240         20352      0      4     81920B       218     0
streams_dblk_24576           112      0     31      4096B        33     0
streams_dblk_28432         28544      0      3     86016B       263     0
streams_dblk_32768           112      0     31      4096B       186     0
streams_dblk_36624         36736      0      3    110592B        39     0
streams_dblk_40960           112      0     31      4096B        36     0
streams_dblk_44816         44928      0      2     90112B         2     0
streams_dblk_49152           112      0     31      4096B         7     0
streams_dblk_53008         53120      0      2    106496B         2     0
streams_dblk_57344           112      0     31      4096B         3     0
streams_dblk_61200         61312      0      2    122880B         4     0
streams_dblk_65536           112      0     31      4096B       803     0
streams_dblk_69392         69504      0      0         0B         0     0
streams_dblk_73728           112      0      0         0B         0     0
streams_dblk_esb             112      0     31      4096B       614     0
streams_fthdr                408      0      0         0B         0     0
streams_ftblk                376      0      0         0B         0     0
multidata                    248      0      0         0B         0     0
multidata_pdslab            7112      0      0         0B         0     0
multidata_pattbl              32      0      0         0B         0     0
log_cons_cache                48     17     83      4096B        22     0
taskq_ent_cache               56   1847   2698    155648B      8463     0
taskq_cache                  216    103    126     28672B       140     0
kmem_io_2G_128               128      2     31      4096B       489     0
kmem_io_2G_256               256      4     15      4096B        23     0
kmem_io_2G_512               512      4      8      4096B         4     0
kmem_io_2G_1024             1024      0      4      4096B        12     0
kmem_io_2G_2048             2048      2      2      4096B         3     0
kmem_io_2G_4096             4096      3      4     16384B        44     0
kmem_io_16M_128              128      0      0         0B         0     0
kmem_io_16M_256              256      0      0         0B         0     0
kmem_io_16M_512              512      0      0         0B         0     0
kmem_io_16M_1024            1024      0      0         0B         0     0
kmem_io_16M_2048            2048      0      0         0B         0     0
kmem_io_16M_4096            4096      0      0         0B         0     0
id32_cache                    32      0    125      4096B      3543     0
bp_map_4096                 4096      0      0         0B         0     0
bp_map_8192                 8192      0      0         0B         0     0
bp_map_12288               12288      0      0         0B         0     0
bp_map_16384               16384      0      0         0B         0     0
bp_map_20480               20480      0      0         0B         0     0
bp_map_24576               24576      0      0         0B         0     0
bp_map_28672               28672      0      0         0B         0     0
bp_map_32768               32768      0      0         0B         0     0
htable_t                      72   2767   2805    208896B     17748     0
hment_t                       64 138049 142600   9420800B    980866     0
hat_t                        176    105    110     20480B      1791     0
HatHash                     4096    105    108    442368B      1975     0
segkp_4096                  4096     97    112    458752B      1180     0
segkp_8192                  8192      0      0         0B         0     0
segkp_12288                12288      0      0         0B         0     0
segkp_16384                16384      0      0         0B         0     0
segkp_20480                20480      0      0         0B         0     0
umem_np_4096                4096      0     32    131072B       577     0
umem_np_8192                8192      0     16    131072B       494     0
umem_np_12288              12288      0     10    131072B       421     0
umem_np_16384              16384      0      8    131072B        73     0
umem_np_20480              20480      0      0         0B         0     0
umem_np_24576              24576      0      5    131072B        31     0
umem_np_28672              28672      0      0         0B         0     0
umem_np_32768              32768      0      4    131072B        39     0
mod_hash_entries              24   1300   1336     32768B     11890     0
ipp_mod                      304      0      0         0B         0     0
ipp_action                   368      0      0         0B         0     0
ipp_packet                    64      0      0         0B         0     0
seg_cache                     96  15615  16031   1601536B    130812     0
seg_pcache                   104      0     38      4096B         3     0
fnode_cache                  176      6     20      4096B        27     0
pipe_cache                   320    134    144     49152B       787     0
snode_cache                  152    438    468     73728B     24448     0
dv_node_cache                176    406    506     94208B       884     0
mac_impl_cache              1776      3      9     16384B         3     0
mac_ring_cache               136      0      0         0B         0     0
flow_entry_cache            3032     13     16     49152B        17     0
flow_tab_cache               216      3     18      4096B         3     0
mac_soft_ring_cache          344      9     10      4096B         9     0
mac_srs_cache               1528      6      8     12288B         6     0
mac_bcast_grp_cache           80     10     50      4096B        14     0
mac_client_impl_cache        728      3     11      8192B         3     0
mac_promisc_impl_cache       112      0      0         0B         0     0
dls_link_cache               336      3     11      4096B         3     0
dls_devnet_cache             320      3     12      4096B         3     0
sdev_node_cache              256   1510   1515    413696B      1903     0
dev_info_node_cache          640    152    162    110592B      1427     0
ndi_fm_entry_cache            32      6    125      4096B        72     0
thread_cache                 872    296    306    278528B      2149     0
lwp_cache                   1424    285    288    442368B       718     0
turnstile_cache               64    619    992     65536B      4074     0
tslabel_cache                 48      2     83      4096B         2     0
cred_cache                   188    147    160     32768B      1465     0
rctl_cache                    48   1434   1494     73728B     16397     0
rctl_val_cache                64   2923   2976    196608B     34315     0
task_cache                   128     41     62      8192B       121     0
kmem_defrag_cache            192      1     20      4096B         1     0
kmem_move_cache               56      0      0         0B         0     0
rootnex_dmahdl              2536   2200   2216   5672960B     64335     0
timeout_request              128      1     31      4096B         1     0
cyclic_id_cache               72      9     55      4096B         9     0
callout_cachebabecafe         80    374    403     53248B       374     0
callout_lcachebabecafe        48   9848   9858    651264B      9848     0
dnlc_space_cache              24      0      0         0B         0     0
vfs_cache                    208     70     76     16384B        76     0
vn_cache                     200  26478  26490   7233536B     36324     0
vsk_anchor_cache              40     40    100      4096B        44     0
file_cache                    56   1366   1420     81920B     71295     0
stream_head_cache            384    956    970    397312B      4600     0
queue_cache                  656   1718   1746   1191936B      7850     0
syncq_cache                  160     12     25      4096B        33     0
qband_cache                   64      2     62      4096B         2     0
linkinfo_cache                48     11     83      4096B        12     0
ciputctrl_cache              128      0      0         0B         0     0
serializer_cache              64    298    310     20480B      1959     0
as_cache                     224    104    119     28672B      1790     0
marker_cache                 120      0     33      4096B       556     0
anon_cache                    48  96891  96944   4784128B    271601     0
anonmap_cache                112  11179  11445   1339392B     69975     0
segvn_cache                  168  15565  15962   2842624B    111959     0
segvn_szc_cache1            4096      0      0         0B         0     0
flk_edges                     48      0     83      4096B         1     0
fdb_cache                    104      0      0         0B         0     0
timer_cache                  136      0      0         0B         0     0
vmu_bound_cache               32      0      0         0B         0     0
vmu_object_cache              32      0      0         0B         0     0
physio_buf_cache             248      0      0         0B         0     0
kcf_sreq_cache                48      0      0         0B         0     0
kcf_areq_cache               288      0      0         0B         0     0
kcf_context_cache            112      0      0         0B         0     0
clnt_clts_endpnt_cache        88      0      0         0B         0     0
zio_cache                    720      0   3553   2646016B    485479     0
zio_link_cache                48      0   3652    180224B    204521     0
zio_buf_512                  512  73559  73928  37851136B     77161     0
zio_data_buf_512             512   1212   1232    630784B      2843     0
zio_buf_1024                1024   1484   1496   1531904B      5263     0
zio_data_buf_1024           1024    105    112    114688B       881     0
zio_buf_1536                1536    309    328    503808B      1168     0
zio_data_buf_1536           1536    124    128    196608B       202     0
zio_buf_2048                2048    178    186    380928B      1084     0
zio_data_buf_2048           2048    105    110    225280B       856     0
zio_buf_2560                2560    133    144    368640B       946     0
zio_data_buf_2560           2560     77     88    225280B       152     0
zio_buf_3072                3072    103    112    344064B       881     0
zio_data_buf_3072           3072     71     80    245760B       726     0
zio_buf_3584                3584     77    128    458752B      2146     0
zio_data_buf_3584           3584     57     64    229376B       119     0
zio_buf_4096                4096    141    145    593920B      4036     0
zio_data_buf_4096           4096     45     48    196608B       235     0
zio_buf_5120                5120     62     80    409600B      4101     0
zio_data_buf_5120           5120     65     68    348160B       320     0
zio_buf_6144                6144     58    156    958464B      1681     0
zio_data_buf_6144           6144     84     88    540672B       297     0
zio_buf_7168                7168     50     60    430080B       590     0
zio_data_buf_7168           7168     54     56    401408B       163     0
zio_buf_8192                8192     20     25    204800B      1293     0
zio_data_buf_8192           8192  35665  36578 299646976B     37990     0
zio_buf_10240              10240     27     36    368640B       430     0
zio_data_buf_10240         10240     30     34    348160B        49     0
zio_buf_12288              12288      7     13    159744B       463     0
zio_data_buf_12288         12288     21     23    282624B        33     0
zio_buf_14336              14336     15    876  12558336B     10537     0
zio_data_buf_14336         14336     43     46    659456B        67     0
zio_buf_16384              16384  10869  10882 178290688B     12124     0
zio_data_buf_16384         16384     25     27    442368B        30     0
zio_buf_20480              20480     12     22    450560B       422     0
zio_data_buf_20480         20480     46     49   1003520B       149     0
zio_buf_24576              24576      7     15    368640B       752     0
zio_data_buf_24576         24576     37     40    983040B        54     0
zio_buf_28672              28672      5     15    430080B       281     0
zio_data_buf_28672         28672     26     26    745472B        26     0
zio_buf_32768              32768      1      9    294912B       349     0
zio_data_buf_32768         32768     31     31   1015808B        31     0
zio_buf_36864              36864      0      6    221184B       118     0
zio_data_buf_36864         36864     23     24    884736B        25     0
zio_buf_40960              40960      3     25   1024000B       325     0
zio_data_buf_40960         40960     15     15    614400B        16     0
zio_buf_45056              45056      6     10    450560B        91     0
zio_data_buf_45056         45056      7      7    315392B         7     0
zio_buf_49152              49152      1      6    294912B       199     0
zio_data_buf_49152         49152     10     10    491520B        10     0
zio_buf_53248              53248      0      3    159744B        28     0
zio_data_buf_53248         53248      7      9    479232B        13     0
zio_buf_57344              57344      1      7    401408B       135     0
zio_data_buf_57344         57344     10     10    573440B        10     0
zio_buf_61440              61440      0      4    245760B        22     0
zio_data_buf_61440         61440     14     14    860160B        28     0
zio_buf_65536              65536    161    167  10944512B      9529     0
zio_data_buf_65536         65536      6      6    393216B         6     0
zio_buf_69632              69632      0      3    208896B        10     0
zio_data_buf_69632         69632      3      3    208896B         3     0
zio_buf_73728              73728      1      6    442368B       113     0
zio_data_buf_73728         73728      8      8    589824B         8     0
zio_buf_77824              77824      0      5    389120B        32     0
zio_data_buf_77824         77824      4      4    311296B         4     0
zio_buf_81920              81920      0      4    327680B       114     0
zio_data_buf_81920         81920      4      5    409600B        24     0
zio_buf_86016              86016      0      3    258048B        12     0
zio_data_buf_86016         86016      3      3    258048B         3     0
zio_buf_90112              90112      0      4    360448B       121     0
zio_data_buf_90112         90112      5      5    450560B         5     0
zio_buf_94208              94208      0      2    188416B         4     0
zio_data_buf_94208         94208      1      4    376832B        41     0
zio_buf_98304              98304      1      5    491520B        77     0
zio_data_buf_98304         98304      1      1     98304B         1     0
zio_buf_102400            102400      0      2    204800B         7     0
zio_data_buf_102400       102400      2      2    204800B         2     0
zio_buf_106496            106496      1      4    425984B        49     0
zio_data_buf_106496       106496      0      0         0B         0     0
zio_buf_110592            110592      0      1    110592B         2     0
zio_data_buf_110592       110592      6      6    663552B         6     0
zio_buf_114688            114688      0      5    573440B        86     0
zio_data_buf_114688       114688      2      2    229376B         2     0
zio_buf_118784            118784      0      3    356352B         8     0
zio_data_buf_118784       118784      3      3    356352B         3     0
zio_buf_122880            122880      1      5    614400B        64     0
zio_data_buf_122880       122880      1      2    245760B         9     0
zio_buf_126976            126976      1      4    507904B         9     0
zio_data_buf_126976       126976      0      1    126976B         4     0
zio_buf_131072            131072      1     37   4849664B      3145     0
zio_data_buf_131072       131072    231    289  37879808B      2137     0
dmu_buf_impl_t               192 116077 117380  24039424B    124235     0
dnode_t                      664  70505  70638  48222208B     71003     0
arc_buf_hdr_t                168  57125  57132  10174464B     62433     0
arc_buf_t                     48  55775  56689   2797568B     65108     0
zil_lwb_cache                200      2   1020    208896B      1927     0
zfs_znode_cache              192  20087  22720   4653056B     81883     0
ip_minor_arena_sa_1            1     26     64        64B       309     0
ip_minor_arena_la_1            1     69    128       128B        71     0
ip_conn_cache                504      1      8      4096B        27     0
tcp_conn_cache              1864     55     62    126976B       113     0
udp_conn_cache              1248     29     36     49152B       712     0
rawip_conn_cache            1168      2     10     12288B         2     0
rts_conn_cache               616      7     12      8192B        11     0
ip_helper_stream_cache        32     67    124      8192B       547     0
ire_cache                    336     38     44     16384B        65     0
rt_entry                     168      2     23      4096B         2     0
radix_mask                    32      1    125      4096B         1     0
radix_node                   120      1     33      4096B         1     0
ipsec_actions                 72      0      0         0B         0     0
ipsec_selectors               80      0      0         0B         0     0
ipsec_policy                  72      0      0         0B         0     0
ipsec_info                   352      0     11      4096B        78     0
tcp_timercache                88     65     90      8192B        66     0
tcp_sack_info_cache           80      2     50      4096B        42     0
tcp_iphc_cache               120     55     66      8192B       111     0
squeue_cache                 168      3     20      4096B         3     0
sctp_conn_cache             2264      1      9     20480B         1     0
sctp_faddr_cache             176      0      0         0B         0     0
sctp_set_cache                24      0      0         0B         0     0
sctp_ftsn_set_cache           16      0      0         0B         0     0
ire_gw_secattr_cache          32      0      0         0B         0     0
socket_cache                 528     67     75     40960B       553     0
socktpi_cache                872      0      9      8192B         1     0
socktpi_unix_cache           872    525    540    491520B      1942     0
sock_sod_cache               680      0      0         0B         0     0
drv_secobj_cache             296      5     13      4096B         5     0
dld_str_cache                288      7     13      4096B       457     0
process_cache               3168    106    117    372736B      1099     0
exacct_object_cache           40      0      0         0B         0     0
hal0_cache                   464      0      8      4096B         1     0
fctl_cache                   112      0      0         0B         0     0
kssl_cache                  1608      0      0         0B         0     0
tl_cache                     432    547    567    258048B      2088     0
keysock_1                      1      0      0         0B         0     0
spdsock_1                      1      0     64        64B         1     0
namefs_inodes_1                1     26     64        64B        28     0
port_cache                    80   2515   6800    557056B      7013     0
lnode_cache                   32      1    125      4096B         1     0
pty_map                       64      3     62      4096B         3     0
ufs_inode_cache              368      0      0         0B         0     0
directio_buf_cache           272      0      0         0B         0     0
lufs_save                     24      0      0         0B         0     0
lufs_bufs                    256      0      0         0B         0     0
lufs_mapentry_cache          112      0      0         0B         0     0
Hex0xffffff0148631658_minor_1      1      0      0         0B         0     0
Hex0xffffff0149d75548_minor_1      1      0      0         0B         0     0
dtrace_state_cache         16384      0      0         0B         0     0
authkern_cache                72      0     55      4096B         7     0
authnone_cache                72      0      0         0B         0     0
authloopback_cache            72      0      0         0B         0     0
authdes_cache_handle          80      0      0         0B         0     0
rnode_cache                  656      2      6      4096B         2     0
nfs_access_cache              56      1     71      4096B         1     0
client_handle_cache           32      1    125      4096B         1     0
rnode4_cache                 968      0      0         0B         0     0
svnode_cache                  40      0      0         0B         0     0
nfs4_access_cache             56      0      0         0B         0     0
client_handle4_cache          32      0      0         0B         0     0
nfs4_ace4vals_cache           48      0      0         0B         0     0
nfs4_ace4_list_cache         264      0      0         0B         0     0
NFS_idmap_cache               48      0      0         0B         0     0
lm_vnode                     184      0      0         0B         0     0
lm_xprt                       32      0      0         0B         0     0
lm_sysid                     160      0      0         0B         0     0
lm_client                    128      0      0         0B         0     0
lm_async                      32      0      0         0B         0     0
lm_sleep                      96      0      0         0B         0     0
lm_config                     80      2     50      4096B         2     0
vnic_cache                   112      0      0         0B         0     0
aggr_port_cache              936      0      0         0B         0     0
aggr_grp_cache              2152      0      0         0B         0     0
crypto_session_cache         104      0      0         0B         0     0
fcsm_job_cache               104      0      0         0B         0     0
sppptun_map                  432      0      0         0B         0     0
------------------------- ------ ------ ------ ---------- --------- -----
Total [hat_memload]                              9629696B    998614     0
Total [kmem_msb]                                13852672B    368877     0
Total [kmem_va]                                411828224B     59945     0
Total [kmem_default]                           433041408B  14276864     0
Total [kmem_io_2G]                                 36864B       575     0
Total [umem_np]                                   786432B      1635     0
Total [id32]                                        4096B      3543     0
Total [zfs_file_data_buf]                      355504128B     47590     0
Total [segkp]                                     458752B      1180     0
Total [ip_minor_arena_sa]                             64B       309     0
Total [ip_minor_arena_la]                            128B        71     0
Total [spdsock]                                       64B         1     0
Total [namefs_inodes]                                 64B        28     0
------------------------- ------ ------ ------ ---------- --------- -----

vmem                         memory     memory    memory     alloc alloc
name                         in use      total    import   succeed  fail
------------------------- ---------- ----------- ---------- --------- -----
heap                      574271488B 1092953833472B         0B     36057     0
    vmem_metadata          17424384B   17432576B  17432576B      4032     0
        vmem_seg           16166912B   16166912B  16166912B      3932     0
        vmem_hash           1006080B    1007616B   1007616B        52     0
        vmem_vmem            258440B     286256B    249856B        79     0
    static                        0B          0B         0B         0     0
        static_alloc              0B          0B         0B         0     0
    hat_memload             9629696B    9629696B   9629696B      2357     0
    kstat                    309608B     315392B    249856B      1006     0
    kmem_metadata          16400384B   16515072B  16515072B      3521     0
        kmem_msb           13852672B   13852672B  13852672B      3387     0
        kmem_cache           249984B     307200B    307200B       424     0
        kmem_hash           2231808B    2240512B   2240512B       263     0
    kmem_log                  65952B      69632B     69632B         6     0
    kmem_firewall_va       34492416B   34492416B  34492416B       270     0
        kmem_firewall             0B          0B         0B         0     0
        kmem_oversize      34413115B   34492416B  34492416B       270     0
    mod_sysfile                 744B       4096B      4096B        18     0
    kmem_va               436310016B  436310016B 436310016B      3472     0
        kmem_default      433053696B  433053696B 433053696B     60274     0
    kmem_io_2G                36864B      36864B     36864B      3414     0
    kmem_io_16M                   0B          0B         0B         0     0
    bp_map                        0B          0B         0B         0     0
    umem_np                  786432B     786432B    786432B        86     0
    ksyms                   2871496B    2899968B   2899968B       317     0
    ctf                     1395410B    1462272B   1462272B       312     0
heap_core                   3092480B  931115008B         0B        50     0
    heaptext               15360000B   67108864B         0B       220     0
        module_text        15583192B   15872000B  15355904B       317     0
    id32                       4096B       4096B      4096B         1     0
    module_data             3302669B    3395584B   3088384B       427     0
logminor_space                   33B     262137B         0B        38     0
taskq_id_arena                   56B 2147483647B         0B        81     0
zfs_file_data             355504128B 2139095040B         0B     37662     0
    zfs_file_data_buf     355504128B  355504128B 355504128B     37662     0
device                      1597440B 1073741824B         0B     33135     0
segkp                      15523840B 2139095040B         0B      2514     0
mac_minor_ids                    15B     261142B         0B        16     0
rctl_ids                         35B      32767B         0B        35     0
zoneid_space                      0B       9998B         0B         0     0
taskid_space                     41B     999999B         0B       120     0
pool_ids                          0B     999998B         0B         0     0
contracts                        44B 2147483646B         0B       135     0
ip_minor_arena_sa                64B     262140B         0B         1     0
ip_minor_arena_la               128B 4294705152B         0B         2     0
lib_va_32                  10252288B 2138816512B         0B        20     0
tl_minor_space                  547B     262138B         0B      2071     0
keysock                           0B 4294967295B         0B         0     0
spdsock                          64B 4294967295B         0B         1     0
namefs_inodes                    64B      65536B         0B         1     0
lib_va_64                 119177216B 137988696055808B         0B       131     0
 
devfsadm_event_channel            1B        101B         0B         1     0
devfsadm_event_channel            1B          2B         0B         1     0
ptms_minor                        3B         16B         0B         3     0
Hex0xffffff0148631658_minor         0B 4294967294B         0B         0     0
Hex0xffffff0149d75548_minor         0B 4294967294B         0B         0     0
syseventd_channel                 3B        101B         0B         3     0
syseventd_channel                 1B          2B         0B         1     0
syseventconfd_door                0B        101B         0B         0     0
syseventconfd_door                1B          2B         0B         1     0
dtrace                         1710B 4294967295B         0B      5295     0
dtrace_minor                      0B 4294967293B         0B         0     0
lmsysid_space                     0B      16383B         0B         0     0
aggr_portids                      0B      65534B         0B         0     0
aggr_key_ids                      0B      64535B         0B         0     0
crypto                            0B         16B         0B         1     0
ipnet_minor_space                 4B     262141B         0B         4     0
ds_minors                         0B     262140B         0B         0     0
logdmux_minor                     0B        256B         0B         0     0
sppptun_minor                     0B         16B         0B         0     0
shmids                            1B         64B         0B        31     0



2009/07/08

ZFS의 메타 데이타 블럭과 데이타 블럭의 할당과 저장

소스 : ZFS, copies, and data protection : Ramblings from Richard's Ranch

ZFS가 블럭 할당을 요청 받았을때 데이타 블럭과 메타 데이타 블럭 할당을 어떻게 하는 것인가에 대한 글입니다.
ZFS는 원래 나왔을 때는 metadata만 redundancy를 가졌는데, nevada 빌드 61부터는 데이타 블럭에 대해서도 redundancy를 가질 수 있도록 했습니다. (리던던시는 같은 블럭의 잉여분을 의미합니다. 장애시 대비를 위한 것입니다.)

즉, 하나의 데이타 블럭이 할당될때는 메타데이타 2블럭과 데이타 블럭 하나가 할당되어지고, 메타 데이타 두개중의 한개는 메타데이타 영역에 나머지 한개는 데이타와 함께 저장을 합니다.
이번 61빌드 이후에는 데이타 블럭도 잉여분을 가질 수 있도록 했는데, 사용자가 지정할 수 있도록 했습니다. 기본값은 1개입니다만 두개로 늘리면 같은 내용의 데이타 블럭이 두개로 늘어납니다. 각 데이타블럭은 메타데이타 블럭과 함께 저장되어야 하므로 메타데이타는 데이타블럭의 개수 + 1개로 결정이 되게 됩니다.
데이타 블럭의 개수가 증가하므로 디스크 사용량이 그만큼 증가하는 것은 너무나 당연하겠죠?






이 데이타 잉여시스템은 볼륨을 제공하는 zpool 단에서 이루어지는 것이 아니라, zfs 단에서 적용되는 것입니다. 따라서, zpool에서 미러링으로 구성했다면, 이중의 중첩된 Data 보호 환경이 구성되는 것이라할 수 있습니다. 미러링과 같은 것을 하지 않은 상태에서 데이타의 무결성을 유지하기 위해서 사용하면 좋을 듯 합니다. 예를 들면, Raid 0(스트라이핑)을 사용할 수 밖에 없으나, 특정 화일 시스템의 데이타는 무결성을 증가하고 싶다면 이 방법을 이용해볼 수 있겠습니다.


2009/06/29

Solaris 10 의 새로운 IPMP

소스 : An Introduction to Clearview IPMP
그동안 진행해왔던 네트웍 가상화 및 성능 개선 프로젝트인 크로스보우 프로젝트가 서서히 완료되감에 따라 기존의 전통적인 기술들에도 운영 방식의 변화가 발생했습니다. 솔라리스 10의 Nevada Build 107에는 기존 IPMP의 개선 작업이 진행되어서 (Clearview IPMP라고 불림) dladm이라는 새로운 명령어의 소개와 함께 ipmp를 구성하는 법 ipmp용으로 새로이 추가된 툴들을 소개하고 있습니다.

자세한 소개와 구성법은 여기에서 참고하시기 바랍니다.


2009/06/15

운영체제의 '쥬스'를 들어보셨습니까?

운영체제의 '쥬스' 이상하게 들리는 문맥이지만, 운영체제의 모든 부가 기능들을 쫘~악 빼서 최소한의 운영체제 기능만을 가지도록 한 버젼(배포판)을 'Just Enough Operating System' 이라고 합니다. 줄여서 JeOS/juice/라고 합니다. 발음은 '쥬~스'에 가까운 것 같군요.

꼭 운영체제를 녹즙기에 집어넣고 물은 쫙빼고 알멩이만 남겨놓은 걸 말하는 것 같습니다. 발음이랑은 그닥 관련은 없는 것 같지만서도...

어쨌든 이런 '쥬스' OS의 탄생은 임베딩 분야에서는 오랜동안 있었다고 할 수 있겠습니다. POSIX를 준수하면서 얼마전에 인텔에 인수된 vxworks도 embed OS였지만, 일반 상용 OS의 JeOS 역할을 한 셈이지요. 최근에 JeOS는 기존 상용 리눅스의 기능을 다이어트한 후 가상화 영역에서의 사용을 목적으로 디자인되었다고 볼 수 있겠습니다. (참고)

쉽게 얘기하면, 서비스를 올리기에 필요한 최소한의 기능만을 탑재한 미니멀OS라고 바꿔말을 할 수도 있겠습니다. 클라우드 컴퓨팅을 염두에 둔 가상화 기술은 궁극적으로 '완전한 유연성을 목표로한 동적인 아키텍쳐'를 지향하고 있는데, 이렇게 하기 위해서는 가상화 객체의 빠른 프로비져닝과 마이그레이션이 필수적인 요소라고 할 수 있겠습니다.

리눅스는 최근에 ubuntu를 포함해서 몇가지가 있는 것 같습니다.
또한, 오픈 솔라리스에서도 이러한 시도가 시작되었습니다.
여러 채널로 이런 얘기가 나오는데, 프로토타입에 대한 얘기가 여기에 자세히 있습니다.
http://blogs.sun.com/VirtualGuru/entry/opensolaris_jeos_prototype_early_access

OpenSolaris JeOS를 활용하면 서비스 지향적인 가상화 환경은 물론 장기적으로 클라우드 컴퓨팅을 보다 수월하게 구축할 수 있게 될것이 예상됩니다. 더욱이 오픈 솔라리스 환경은 리눅스에서는 제공되지 않는 막강한, 네트웍 인터페이스 가상화 기능(crossbow), 스토리지 풀(zfs), 디트레이스(dtrace)등이 제공됨에 따라, 가상화 어플라이언스 용 운영체제는 물론 가상화 객체용으로도 그 어떤 운영체제보다 수준 높은 기능으로 각광을 받지 않을까 생각해봅니다.

2009/06/05

솔라리스에서 dtrace로 자바 메모리 활동 추적하기

Sun의 Jim Fiori가 제시한 방식입니다.

#!/usr/sbin/dtrace -qs

/*

* Show object allocation, aggregating the Java stack, methods,

* and object sizes

*

*/



hotspot$1:::object-alloc

{

       this->class = copyinstr(arg1,arg2);

       this->sz = arg3;

       @[jstack(40, 8000)] = count();

       @objs[this->class] = count();

       @sizes["Sizes"] = quantize(this->sz);

}

END

{



       trunc(@,20);

       trunc(@objs,10);

       printf ("\n****************Top Java stacks for memory
allocations*************\n");

       printa(@);

       printf ("\n****************Top Objects for memory
allocations*************\n");

       printa(@objs);

       printf ("\n****************Object sizes*************\n");

       printa(@sizes);



}

Pass in the JVM pid. You will have to use this startup flag for the JVM:



# java -XX:+ExtendedDTraceProbes



If you can't use Java 6, I've got something similar that uses the DTrace
VM agents.



To add looking at "heap" allocations via libumem, just add some PID
provider probes like:



pid$1::malloc:entry

{

   @mall_stack[jstack(40, 8000)] = count();

   @mall_sz = quantize(arg0);

}

<솔라리스, 디트레이스,자바, Solaris, dtrace, java>

2009/05/28

Solaris에서 유요한 dtrace script : 읽으려고 시도했다가 에러 리턴된 것만 트레이스 하기

명령어 라인에서 한 줄로 실행하기 위해서는 다음과 같이 했습니다.(오픈솔라리스)
$pfexec dtrace -q -n 'syscall::open*:entry/execname != "gnome-netstatus-" && execname != "VBoxSVC"/{self->trace=timestamp;d=copyinstr(arg0);}' \
                        -n 'syscall::open*:return/self->trace&&arg1<0/{printf("%s:%d:%s(%d)\n",d,pid,execname,arg1);self->trace=0;}'  | tee /var/tmp/open2.log

gnome-netstatus- 와 VBoxSVC라는 프로세스에서 시도하는 open() call은 회피합니다. 너무 많아서.

script로 바꾸면 다음과 같이 작성합니다.

#/usr/sbin/dtrace

syscall::open*:entry
/execname != "gnome-nstatus-" && execname != "VBoxSVC"/
{
            self->trace=timestamp;
            d=copyinstr(arg0);
}

syscall::open*:return
/self->trace && arg1<0/
{
            printf("%s:%d:%s(%d)\n",d,pid,execname,arg1);
            self->trace=0;
}

eopen.d
라고 이름을 지었다면

dtrace -s eopen.d
라고 실행합니다.

결과는 다음과 같습니다.
....
/var/pkg/pkg/SUNWavahi-bridge-dsd/0.5.11%2C5.11-0.101%3A20081119T214544Z/filters:3752:pkg(-1)
/var/pkg/pkg/SUNWlang-common/0.5.11%2C5.11-0.101%3A20081119T233506Z/filters:3752:pkg(-1)
/var/pkg/pkg/SUNWperl584man/5.8.4%2C5.11-0.101%3A20081119T215746Z/filters:3752:pkg(-1)
/var/pkg/pkg/SUNWadmap/0.5.11%2C5.11-0.101%3A20081119T214241Z/filters:3752:pkg(-1)
/var/pkg/pkg/SUNWgnome-l10nmessages-zhCN/0.5.11%2C5.11-0.101%3A20081119T233244Z/filters:3752:pkg(-1)
/var/pkg/pkg/SUNWnfsc/0.5.11%2C5.11-0.101%3A20081119T215559Z/filters:3752:pkg(-1)
/var/pkg/pkg/SUNWos86r/0.5.11%2C5.11-0.101%3A20081119T235320Z/filters:3752:pkg(-1)
....

2009/05/20

Solaris 8 서비스 단종 절차 단계 2 종료

솔라리스 8의 운영체제 지원의 마지막 단계에 이름에 따라 이제 솔라리스 8 서포트는 공식적으로 완전 종료되었다고 할 수 있겠습니다.

업무상 어쩔 수 없이 솔라리스 8을 계속해서 사용해야 한다면 특수 지원 서비스 계약( vintage support)를 하셔야 할 듯 하겠습니다. <br /> <br />* Phase 2 EOSL for Solaris 8 OS Has Arrived <br /><a class="moz-txt-link-freetext" href="http://communications1.sun.com/r/c/r?2.1.3J1.2TZ.11wryA.CHpe8E..T.GBWS.2KpE.bW89MQ%5f%5fCdZAFPD0">http://communications1.sun.com/r/c/r?2.1.3J1.2TZ.11wryA.CHpe8E..T.GBWS.2KpE.bW89MQ%5f%5fCdZAFPD0</a> <br />Sign up for Solaris 8 Vintage Patch support if you would <br />like to continue running your applications on Solaris 8. 
솔라리스는 매우 오래전부터 구버젼의 이진 화일을 신버젼에서도 그냥 복사해서 실행시킬 수 있도록 가장 진보된 '애플리케이션 이진 호환성'을 유지하고 있습니다. 쉽게 얘기하면 그냥 업그레이드 하면 된다는 뜻이죠. 굳이 단종된 구버젼의 서비스를 비싸게 구매할 필요가 없단 뜻이기도 합니다.

다만 애플리케이션의 성능 최적화를 위해서는 상업용 애플리케이션의 업그레이드가 필요할 수 는 있겠습니다. 혹은 상업용 애플리케이션의 추가 지원을 위해서도 상업용 애플리케이션의 동반 업그레이드가 요구되어질 수도 있습니다.  상업용 애플리케이션이 문제가 된다면 이때 과감하게 상업용 수준의 '오픈 소스'로 이전하시길 권고합니다.

웹은 아파치, 애플리케이션 서버는 'glassfish'. 그 어떤 상업용 애플리케이션 서버보다 훌륭합니다. 만약 DB를 바꾸기 쉽지 않으시다면, 솔라리스 10의 S8C, S9C를 이용해서 이전 환경을 그대로 가져다가 수행하는 것도 좋을 듯 합니다.



2009/05/07

가상화와 윈도우즈 게스트의 네트웍 성능

1.Type 2 하이퍼바이저의 게스트 운영체제를 위한 네트웍 구성
오픈솔라리스 (opensolaris)에서 버추얼 박스를 통한 Type 2 가상화 시스템을 운영하고 있습니다. 3개의 윈도우즈 XP Pro guest 와 1개의 Opensolaris guest, 1개의 Ubuntu guest를 구성해놓은 상태에서 3개의 windows XP는 상시 운영하고 있습니다.

Type 1의 가상화인 xvm이나 vmware와는 달리 Type 2의 경우에는 가상화된 영역내의 네트웍 카드를 가상화 시스템인 Type 2 하이퍼바이저로부터 부여 받게 됩니다. 저의 경우에는 '버투얼박스'에 의해서 네트웍 카드를 가상화 게스트에 할당하게 됩니다.

이때 구성할 수 있는 네트웍 카드는 AMD PCNET Family PCI Ethernet Card가 기본으로 잡히고 Intel EtherPro Desktop 100Mb 네트웍 카드도 잡을 수 있습니다. 사실 하이퍼 바이저의 입장에서는 다른 네트웍 디바이스를 프리젠트하면서, 게스트 운영체제의 디바이스 드라이버로부 서로 다르게 받아지는 명령어들을 에뮬레이션 하는 부분에서의 성능 차이가 매우 클 것입니다만 이 이야기는 여기서 언급할 내용은 아닙니다. 기회가 되면 이부분을 언급해 보겠습니다.

하이퍼바이저에서 사용할 네트웍 카드를 선정하게 되면, 게스트에게 가상 네트웍 카드를 사용하는 방식을 결정해야 하는데, 이 방식에 따라서 게스트 운영체제가 IP 주소를 설정하는 방식이 변경되게 됩니다.

가장 기본적인 방식인 NAT 방식을 설정하면 게스트 운영체제는 하이퍼바이저가 제공하는 사설 IP 주소를 DHCP 방식으로 부여받게 되고, 하이퍼 바이저는 내장된 NAT 기능을 통해 자체적으로 default gateway 역할을 함과 동시에 외부 운영체제(하이버바이저가 실행되고 있는 운영체제)로 게스트의 패킷들을 포워딩하게 됩니다. 이후 시스템 운영체제가 패킷을 적당히 포워딩하게 됩니다.

NAT 방식과는 달리 게스트 운영체제에 '호스트 인터페이스(Host Interface)' 방식을 설정할 수 도 있습니다. 이 방식을 선택하게 되면, 게스트 설정시 사용할 실제 네트웍카드로 선택을 해야 하는데, 게스트에 나타나는 가상화된 네트웍 카드를 마치 서버의 실제 네트웍 카드인것처럼 동작하도록 합니다. 즉, 게스트 운영체제는 실제로 실제 연결된 네트웍 카드를 통해 외부 네트웍에 직접 연결되어 있는 형태를 가지게 됩니다. 이때의 경우에는 게스트 운영체제가 해당 네트웍카드에서 DHCP 클라이언트를 운영하여 IP를 받을 수 있음은 물론, 정적 IP를 임의로 설정할 수도 있게 됩니다.

브로드컴 네트웍 카드(bge0)카드에 192.168.x.x 정적 주소를 가진 서버가 한대 있다고 합시다. 이 서버에 버추얼 박스를 설치 실행해서 설정된 게스트 중 NAT 방식은 게스트가 10.x.x.x 대의 IP를 받게되고 하이퍼바이저의 패킷 포워딩에 따라서 패킷이 움직이는 반면, 'Host Interface' 방식은 서버의 bge0 에 설정된 192.168.x.x와 같은 네트웍 단의 주소를 정적으로 설정하거나 DHCP로 받을 수 있게 됩니다.

이 두방식은 용도와 목적에 따라서 장단점이 있습니다. 일반 기업에서 서비스를 올리기 위해서는 '호스트 인터페이스'가 나은 면이 있고, 개발자들의 용도라면 NAT가 편리합니다. 기업내 네트웍을 담당하는 부서에 요청할 필요가 없기 때문이죠.

그런데, NAT 를 사용하게 되면 이미 언급된 대로 하이퍼 바이저를 통해서 패킷에 헤드 비트들이 추가적으로 붙게 되므로 직접 붙는 경우와 달리 패킷당 크기가 변하게 됩니다. 윈도우즈 게스트들은 기본적으로 단위 전송 크기(MTU)를 1500으로 고정을 하게 된 상태로 운영하는데 이렇게 되면 게스트에서는 단일 패킷이지만, 버추얼박스에서 추가된 비트들로 인해 두 패킷으로 분리되어 두개로 나가게 되는 경우가 생기게 됩니다. 이렇게 되면 버추얼 박스가 한번 보내면 될 것을 두번 보내야 하므로 CPU를 더 쓰게 되고, 게스트 입장에서 볼때는 성능이 더 떨어지게 됩니다. 하이퍼 바이저가 두번처리하는 것을 기다려야 하기 때문이죠.

따라서, 이와 같이 Type 2 기반의 가상화를 하는 경우에는 게스트 운영체제에 Ethernet MTU 크기를 변경함으로써 하이퍼바이저가 두번할일을 최소화 시킴으로써 시스템이 느려지는 것을 최대한 막아볼 수 있습니다.(역으로 얘기하자면, 기본 구성 대비 성능이 좋아지는 셈이죠)

2. MTU 변경을 통한 성능 개선
2.1 윈도우즈 게스트 튜닝
일단, 현재 구성된 상황에서 MTU가 문제가 없는 지 확인을 하기 위해서는 Windows Guest 내에서 도스 명령어 창을 실행합니다. "시작 -> 실행 -> cmd 입력"
여기에서 외부 인터넷의 한 사이트의 IP 주소를 설정하고 어떤 패킷의 크기가 적합한 지를 검사해봅니다.
여기에서는 www.google.com 의 한 IP 주소를 사용했습니다. 참고로, 제가 테스트하는 네트웍은 미국의 화이어월을 통해서 패킷이 나가는 경우이므로 나라와 상황에 따라 다를 수 있으므로 적절한 사이트의 주소를 선택하실 필요가 있습니다.

만약 www.google.com이 아닌 www.naver.com의 IP 주소 를 획득하고 싶다면, 도스 창에서 다음과 같이 실행하면 여러개의 IP를 얻을 수 있습니다.

>nslookup www.naver.com

테스트용 주소를 결정했으면 (여기서는 64.233.189.104) 다음과 같이 실행해서 MTU 길이에 따른 문제가 있는 지를 확인해봅니다.

>ping 64.233.189.104 -f -l 1500
C:\>ping 64.233.189.104 -f -l 1500
Pinging 64.233.189.104 with 1500 bytes of data:
Packet needs to be fragmented but DF set.

Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Ping statistics for 64.233.189.104:

Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)

위와 같은 메세지가 나오면 위 명령어에서 1500부터 10씩 빼가면서 테스트를 해봅니다.
C:\>ping 64.233.189.104 -f -l 1480
Pinging 64.233.189.104 with 1480 bytes of data:
Packet needs to be fragmented but DF set.

Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Ping statistics for 64.233.189.104: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

C:\>ping 64.233.189.104 -f -l 1470
Pinging 64.233.189.104 with 1470 bytes of data:
Reply from 64.233.189.104: bytes=56 (sent 1470) time=113ms TTL=127

Reply from 64.233.189.104: bytes=56 (sent 1470) time=109ms TTL=127
Reply from 64.233.189.104: bytes=56 (sent 1470) time=105ms TTL=127
Reply from 64.233.189.104: bytes=56 (sent 1470) time=111ms TTL=127
Ping statistics for 64.233.189.104: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),



1470 bytes에서 "Packet needs to be fragmented but DF set" 없이 작동되고 있음을 알 수 있습니다. 단단위의 튜닝을 좀 더 해볼 수도 있습니다.
그렇게 해서 최적의 MTU가 나왔다면 (예를 들어, 1472) 이제는 레지스트리에 저장을 해야 합니다. 레지스트리를 수정하는 자제하는 방법은 여기를 참고하십시요. 쉽게 얘기하면
"시작버튼->실행->regedit" 을 실행합니다. 좌측 트리에서 다음과 같이 순서를 찾습니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
네트웍 인터페이스가 너무 많아서 어떤 것인지 모르겠으면 죄다 설정하십시요.
좌측 트리에서 각 ID 위에 마우스를 두고 우측 버튼을 누르면 'New..'가 나타납니다. 여기서 DWORD 값을 추가하면 우측 화면에 키 이름을 넣으라고 나옵니다. 여기에서 MTU 라고 입력하시고, MTU에서 마우스 우측 버튼을 누르면 'Modify Key' 가 나옵니다. 선택하시고 값을 입력하시는 데 우측 아래에서 십진수(Decimal)을 선택하신후 1472를 입력합니다.

같은 방법으로 모든 네트웍 카드에 대해서 설정하시고, regedit을 종료한 후에, 게스트 운영 체제를 재부팅합니다.

2009/04/29

진화하는 mysql

몇일전에 발표된 것 같군요. (Apr 21st PDT)
http://dev.mysql.com/doc/mysql-5.4-features/en/index.html

MySQL 5.4의 새로운 버젼이 발표되었는데, 주목할 만한 것이 있네요.

기존의 큰 문제점 중 하나였던 innodb의 확장성이 X86에서 16-way(16cores) 수준으로 늘어났습니다.
그런데, CMT에서는 64-way까지라네요. 왜 다른지 좀 이해가 안가긴 합니다만(아마도 CMT는
스레드  개념을 써서 그런게 아닌가 싶네요. 코어야 어차피 8개니... 8way라서 그런가 ? )
어쨌든 CMT에서는 더 많은 (무려 4배) core까지 확장을 하고 있습니다.

그리고 성능(Response time)도 smpfix를 통해서, insert의 경우 응답시간이 1/4배로 빨라지고,
처리량(Throuput)은 대개 3배정도가 빨라지는 놀라운 결과를 보여주고 있습니다.
http://code.google.com/p/google-mysql-tools/wiki/SmpPerformance


더욱이 이번 mysql 5.4는  솔라리스의 독보적인 추적툴인 Dtrace를 지원하게 되었습니다.
Dtrace는 mysql의 전체적인 데이타 흐름을 보여주는 기능을 지원함에 따라, 이전에는 상상할 수 없는 수준의
데이타베이스 엔진 작동 추적이 가능해졌습니다. Amazing !!!
아래와 같은 데이타 베이스 작동 메커니즘을 보여줄뿐 아니라, 매 작동 단위당 응답시간을 체크할 수 있는 놀라운 기능이 가능해졌습니다.



2009/04/16

오픈 솔라리스 랩탑 판매 개시!!

도시바가 오픈 솔라리스가 기본 장착된 노트북 판매를 개시했네요.
opensolaris.com에서 온라인상으로 가능하고, 일단 현재는 미국만 가능한 것으로 되어 있습니다.

솔라리스가 기본 장착된 랩탑이라, 흥분되는 군요.

자세한 내용은 아래 링크로 고고..

On The Record


2009/04/14

솔라리스에서 화일 시스템 캐쉬 최적화를 위한 전략

The Zone Manager: Filesystem Cache Optimization Strategies

솔라리스에서  제공되는  대표적인  화일 시스템인 ufs와 zfs가 사용하는 캐쉬를 이해하고 최적화해서 사용할 수 있는 전략 수립을 도와줍니다.

ufs의 경우는 데이타가 충분히 메모리에 올라가있도록 캐쉬 크기를 조절하고 메모리에 유지되도록 해주는 설정방법을 제공하며, zfs의 경우는 ARC(cache)의 크기를 조정하는 파라메터 설정을 제공합니다.

한번 참고 삼아 훑어볼 만합니다.


2009/04/06

JAVA 미들웨어를 위한 솔라리스 ( Solaris ) 10 튜닝

솔라리스에서 각종 자바 미들웨어를 위한 튜닝 방법입니다.
관련 글은 웹스피어에 관해서만 언급이 되어 있으나, Weblogic, Glassfish등에도
그대로 적용된다고 할 수 있겠습니다.

Solaris Network Tuning for WebSphere Application Environment - Albert Leigh's Weblog

위 사이트를 가보시면 몇몇 주요 튜닝이 있습니다.
CONNECTION REQEUSTS를 위한 튜닝과 TCP 버퍼를 위한 변수들
그리고 접속을 위한 변수들의 튜닝이 있습니다.

특별히 다중 코어를 가진 장비에서는 솔라리스의 ip 스트림큐를 늘려주어야 하는데
지금 4core 이상의 장비들을 기준으로 보면 당연히 늘리는 것이 좋을 듯 합니다.
    set ip:ip_soft_rings_cnt = 8<br />    set ddi_msix_alloc_limit = 8<br />

대개 코어의 개수와 동일하게 설정해주고 테스트를 해보는 것이 좋을 것 같습니다.
여러 단계의 테스트가 가능하다면 설정없이 테스트하고, 설정한 후에 테스트를 해보면
어떤 영향이 있는 지 좀더 알 수가 있습니다. 하드웨어의 사양이 끊임없이 변하므로
관련 변수도 끊임없이 수정 테스트가 필요합니다.


2009/02/25

오픈 솔라리스에서 인증서와 .p12 화일을 만드는 법

인증서를 만들기 위해서는 일단 다음처럼 실행합니다.
새로운 x509 인증서 발급을 하되 키는 nethippo-CA.key.pem에 담고, 인증서는 nethippo-CA.cert.pem에 담도록 합니다. 유효기간은 10년으로 정합니다.
$openssl req -new -x509 -keyout nethippo-CA.key.pem -out nethippo-CA.cert.pem -days 3650

발급된 인증서를 바탕으로 외부 유출이 가능한 .p12 화일을 생성합니다.
$openssl pkcs12 -export -in nethippo-CA.cert.pem -inkey nethippo-CA.key.pem -out nethippo.p12 -name "Kildong Hong"

이제 썬더버드와 같은 곳에서 위에서 생성한 .p12  화일을 import하여 장착한 후 메일을 사이닝 혹은 암호화할 수 있게 됩니다.

나의 X2200에 무슨 일이?

최근 x2200 장비에 로그인을 했더니, 매우 느리다는 느낌이 왔습니다.
이유를 확인해야 한다고 생각했는데, 바빠서 잊고 있었습니다.

그래서 오늘 짬을 내서 보기로 했습니다.

우선은 ssh로 로그인하는 데 느려진 것 같아서
일단 /etc/nsswitch.conf와 /etc/resolv.conf를 확인해보았습니다.
별 문제가 없는 데 왜 느려졌지 하는 생각이 드는 군요.

일단 vmstat로 시작을 해보았습니다.

 kthr      memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr s0 s1 s2 --   in   sy   cs us sy id
 0 0 0 2287196 2068940 26 2 152 3  3  0  0 15 -1 -0  0 1245 1719  632  0 24 75
 1 0 0 3477208 2840460 1 46  0  0  0  0  0  0  0  0  0  421  458  278  0 25 75
 1 0 0 3477104 2840356 0  4  0  0  0  0  0  0  0  0  0  446  806  353  0 26 74
 1 0 0 3477104 2840356 0  0  0  0  0  0  0  0  0  0  0  406  435  254  0 25 75
 1 0 0 3477104 2840356 0  0  0  0  0  0  0  0  0  0  0  416  437  276  0 25 75
 1 0 0 3477104 2840356 0  0  0  0  0  0  0  0  0  0  0  408  477  260  0 25 75
 1 0 0 3477104 2840356 0  0  0  0  0  0  0  0  0  0  0  410  436  265  0 25 75
 1 0 0 3477104 2840356 0  0  0  0  0  0  0  0  0  0  0  443  747  340  0 26 74
 1 0 0 3477104 2840356 0  0  0  0  0  0  0  0  0  0  0  418  487  265  0 25 75
 1 0 0 3477104 2840356 0  0  0  0  0  0  0  0  0  0  0  409  439  265  0 25 75
 1 0 0 3477104 2840356 0  0  0  0  0  0  0  0  0  0  0  415  436  257  0 25 75


아무것도 안하고 있는 이 장비가 뭔가 열쒸미 하고 있네요.. 왜 평균 CPU가 75%일까 ?
sys%가 25%인 것으로 봐서, 4개의 코어이니, 한 코어가 system 관련해서 cpu를 다쓰나 ?
mpstat를 보기로 했습니다.
CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0    0   0    3   340  131  168    0    1    0    0    71    0   0   0 100
  1    2   0    0    49    3   80    0    1    1    0   327    1   0   0  99
  2    0   0    0    16    0   28    0    1    0    0    67    0   0   0 100
  3    0   0    0    15   13    0    0    0    1    0     0    0 100   0   0
CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0    0   0    0   355  140  181    0    6    0    0    93    0   0   0 100
  1    0   0    0    51    2  124    1    4    2    0   611    0   5   0  95
  2    0   0    0    26    4   43    0    1    0    0    97    1   0   0  99
  3    0   0    0     9    8    0    0    0    1    0     0    0 100   0   0
CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0    0   0    0   340  132  170    0    2    0    0    75    0   1   0  99
  1    0   0    0    47    3   77    0    2    2    0   367    0   0   0 100
  2    0   0    0    17    0   32    0    4    0    0    68    0   0   0 100
  3    0   0    0    11   10    0    0    0    2    0     0    0 100   0   0
CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0    0   0    0   345  134  169    0    4    0    0    78    0   0   0 100
  1    0   0    0    47    3   78    0    3    1    0   313    0   0   0 100
  2    0   0    0    16    0   30    0    2    0    0    69    0   0   0 100
  3    0   0    0     9    8    0    0    0    2    0     0    0 100   0   0


음.. 예상대로 cpu (3번) 하나가 syscall 때문에 죽어나고 있네요.
뭐 때문에 저럴까요 ?

dtrace를 해보기로 했습니다.
일단, 도대체 커널의 어떤 부분이 cpu 3번을 다 쓰고 있을까 궁금합니다.

$pfexec dtrace -n 'fbt:::entry{@[probemod]=count();}'
dtrace: description 'fbt:::entry' matched 33143 probes
^C

  devfs                                                             1
  FX                                                                8
  cpu_ms.AuthenticAMD.15                                            8
  elfexec                                                           8
  lofs                                                             11
  mntfs                                                            16
  kcf                                                              20
  fifofs                                                           24
  pset                                                             24
  swrand                                                           28
  cpu.generic                                                      48
  ptm                                                             112
  pts                                                             141
  namefs                                                          147
  ttcompat                                                        236
  ptem                                                            276
  dld                                                             400
  mac_ether                                                       491
  arp                                                             494
  mac                                                             520
  scsi                                                            559
  ldterm                                                          755
  rootnex                                                         783
  ata                                                             997
  doorfs                                                         1024
  tmpfs                                                          1030
  sata                                                           1199
  sha1                                                           1284
  ohci                                                           1437
  nfs                                                            1508
  dls                                                            1544
  nv_sata                                                        2061
  sd                                                             2098
  TS                                                             2639
  nge                                                            2779
  procfs                                                         2893
  tl                                                             3066
  specfs                                                         6696
  ip                                                             7521
  ehci                                                           8709
  sockfs                                                         9242
  bge                                                            9686
  ufs                                                           38891
  pcplusmp                                                      45652
  genunix                                                     1267865
  unix                                                       28401472


sys는 전부 커널 영역이라 fbt Provider를 지켜봤는데, unix가 많이 사용되고 있군요.
어떤 unix의 어떤 모듈이 많이 사용되는 지 궁금해지는 군요.
 $pfexec dtrace -n 'fbt:unix::entry/cpu==3/{@[probefunc]=count();}'
dtrace: description 'fbt:unix::entry' matched 1538 probes
^C

  cmt_balance                                                       1
  cpu_choose                                                        1
  cpu_resched                                                       1
  cpu_wakeup                                                        1
  disp_lowpri_cpu                                                   1
  hati_sync_pte_to_page                                             1
  page_get_pagecnt                                                  1
  poke_cpu                                                          1
  setbackdq                                                         1
  tsc_gethrtimeunscaled                                             1
  tsc_gethrtimeunscaled_delta                                       1
  tsc_scalehrtime                                                   1
  x86pte_access_pagetable                                           1
  x86pte_get                                                        1
  x86pte_release_pagetable                                          1
  av_dispatch_softvect                                              2
  av_set_softint_pending                                            2
  cbe_low_level                                                     2
  cbe_softint                                                       2
  cms_hdl_getcms                                                    2
  cms_hdl_getcmsdata                                                2
  cms_poll_ownermask                                                2
  dosoftint_epilog                                                  2
  dosoftint_prolog                                                  2
  gethrestime_sec                                                   2
  pc_gethrestime                                                    2
  put                                                               2
  gethrestime_lasttick                                              3
  hr_clock_lock                                                     3
  hr_clock_unlock                                                   3
  x86pte_inval_func                                                 3
  ip_ocsum                                                          4
  lock_set_spl                                                      4
  av_check_softint_pending                                          6
  call_func_ntv                                                    12
  checked_rdmsr                                                    12
  cmi_hdl_rdmsr                                                    12
  msri_lookup                                                      12
  ntv_rdmsr                                                        12
  ntv_rdmsr_xc                                                     12
  mutex_vector_enter                                               15
  cbe_fire                                                         18
  cbe_reprogram                                                    18
  default_lock_delay                                               22
  tsc_gethrtime_delta                                              38
  putnext                                                          46
  xc_serv                                                          51
  hilevel_intr_prolog                                              69
  hilevel_intr_epilog                                              70
  page_release                                                    105
  intr_thread_epilog                                              148
  intr_thread_prolog                                              148
  bcmp                                                            168
  av_dispatch_autovect                                            217
  hat_page_getshare                                               374
  hment_mapcnt                                                    374
  hat_page_clrattr                                                704
  page_io_trylock                                                 704
  page_io_unlock                                                  704
  page_lookup_nowait                                              704
  hat_page_setattr                                                705
  hat_pagesync                                                    907
  page_next_scan_large                                            914
  x86_hm_enter                                                   1184
  x86_hm_exit                                                    1184
  page_add                                                    3056448
  page_sub                                                    3059851
  page_unlock                                                 3060007
  page_trylock                                                4852320


page_trylock ? 뭔가가 lock을 하려고 하는데 안되나 보군요.
page_trylock을 유도하는 process가 뭔지 궁금해졌습니다.
$pfexec dtrace -n 'fbt:unix:page_trylock:entry/cpu==3/{@p[execname]=count();}'
dtrace: description 'fbt:unix:page_trylock:entry' matched 1 probe
^C

  fsflush                                                     8032633


아..... 하.. 그렇군요. fsflush가 계속해서 page lock을 시도했군요.
그러고나니, 아주 오래전에 제가 화일 시스템 옵션을 변경했던 적이 생각이 납니다.
ufs의 옵션을 변경했었고 nfs로 외부 화일 시스템을 하나 마운트했던 게 생각이 나는 군요..
그게 이런 결과를 초래한 줄은 생각도 못했군요. ㅡㅡ;

어느 쪽의 문제인지 확인이 필요하겠네요.

/etc/vfstab을 확인해봤습니다.
/var/run on swap read/write/setuid/devices/xattr/dev=4800003 on 목  2월 12 14:41:03 2009
/export/home on /dev/dsk/c1t0d0s7 read/write/setuid/devices/intr/largefiles/xattr/noatime/onerror=panic/dev=780007 on 목  2월 12 18:32:57 2009
/net/129.158.2.181/export/web on 129.158.2.181:/export/web remote/read/write/nosetuid/nodevices/xattr/dev=4a80002 on 목  2월 12 17:07:37 2009


nfs를 우선적으로 umount 해보려고 했더니 안되는 군요. ㅡㅡ; 그제서야 생각났습니다.
nfs 대상 서버가 임시로 올렸다가 죽인 서버였다는 것을... 
그렇다고... 이렇게 cpu를 많이 사용하는게 이해는 안되는 군요..
버그가 아닌가 생각이 드는군요. 패치를 찾아봐야 겠습니다.