Skills/mY Technutz 2020. 4. 6. 16:35

Oracle Linux 7 의 RHCK 를 사용하는 고객인데, Crash dump 가 발생하여 분석을 요청했다.

그냥 넘어가려고 했는데 eBPF 를 사용중인 서버에서 발생한 이슈라 흥미를 갖고

한번 살펴보기로 했다.

재밌는건 위 bpftool 은 sosreport 를 수집할때 systemtab 에 의해 수행되는 명령이었다.

재현테스트를 테스트머신을 만들어 수행해 보았으나, 아무런 이상없이

정상적으로 수집되고, 값도 정상적이다.

또한 bpftool 명령이 설치되어 있지 않다면 sosreport 수행 시행되지 않는다.

현재 고객은 위에서 보다시피 seos 등 3rd party 모듈을 여럿 사용하고 있었고,

filesystem permission 등의 관리가 이루어지고 있었기 때문에,

보안모듈을 의심할 수 밖에 없는 상황이였다.

안타깝게도, eBPFOL/RHEL 7 에서 Technical Preview 로 제공되므로,

더 깊은 상태의 investigation 이나 패치는 제공되지 않는다.

보다 상위의 커널들 ( Kernel 4.x, UEK4/5 ) 에서는 security_ops 를 아예 제거했고,

기본적으로 보안체크를 거치지 않고 다른 방법으로 처리하고 있었기에

적용하기도 어려운 상태였다.

결국 임시방편으로 고객에게 3rd-party 솔루션에서 bpftool 를 사용하는지 확인 후,

사용하지 않고, 필요로 하지 않는다면,

해당 패키지를 삭제하고 사용하지 않도록 하라고 권고하였다.

해당 패키지 (bpftool) 삭제 후 현재까지 이상없이 잘 운영중으로 보인다.

** Notes : 사실 Herbert 나 Todd 등 유수한 개발자님들께서 Technical Preview 라 귀찮다고
             코어덤프 거들떠보지도 않으셔서 상당히 어렵게 확인함 ㅋ

posted by mirr

댓글을 달아 주세요

  1.  Addr  Edit/Del  Reply Favicon of https://cuzmall.com/스포츠-레저/조아캠프-캠핑테이블-120-전용.. BlogIcon 조아캠프

     

    2020.06.14 03:37

Skills/mY Technutz 2019. 12. 13. 17:44

요즘 다시 혼자서 근무하다보니, 업무량이 훅 늘어나고

분석에 대해서는 반복적인 부분이 많이 발생하는데 그에 대한 시간은 여전히 동일하게 들어서

간편화 하는 방법이 없을까 해서 간단히 python 으로 crash utility 에 대한 extension 을 직접 만들고 있었는데,

하늘아래 새로운 것은 없듯이 역시나 이미 만들어져 있었다는 것을 발견하였다.

그것은 바로 mPyKdump 라는 crash extension 이다.

https://sourceforge.net/p/pykdump/wiki/Home/

일단 커널 코어덤프 분석을 위한 도구인 crash 툴은 C/Python 형태의 외부 스크립트를

내부에서 불러와 사용할 수 있다.

대부분 c 로 컴파일되어 모듈형태로 crash 툴이 실행된 후 로드하는 형태로 사용되는데

mPyKdump 는 파이선 기준으로 작성되어 내용을 수정하더라도 특별히 컴파일이 필요없이

바로바로 적용이 가능하다는 장점이 있었다.

해당 모듈을 이용하여 얼마나 간편하게 기존 삽질을 줄일 수 있는지 확인해보자.

(Host정보 삭제함)


여기까지 PyKdump 모듈의 기능에 대해서 살펴보았다.

이제 커널정보들도 상당히 공개되고 알려져 먹고살기 참 힘든 세상이 되었다.

추가 팁 : 자동으로 mPyKdump 모듈을 로드시키고 싶을 경우,

.crashrc 파일을 만들어 아래와 같이 넣어주면 실행시 자동 로드한다.

.crashrc 는 크래쉬 툴 명령명과 동일하게 만들어 주면 된다.
(.crash64rc 와 같이.)

# cat ~/.crash64rc
extend /usr/local/lib64/mpykdump64.so


posted by mirr

댓글을 달아 주세요

Skills/mY Technutz 2018. 3. 29. 13:31

결국 같은 이슈였다.

내가 전에 올렸던 Kernel Dump Analysis #14 / #15 두개의 이슈..

결국 #15 와 #14 모두 동일한 rport reference count 관련 race condition bug 였다.

비록 양상이 다르긴 했지만 모두 Kref 를 감소시키며 0 으로 만드는 과정에서

Race condition 으로 인해 다른 메모리 값을 참조하게 되는 버그였다.

아래는 해당 버그에 대한 Patchwork (GIT) 링크 이다.

https://patchwork.kernel.org/patch/9132823/

대략 reference count초기화 하는 과정에서 Mutex lock 을 걸어

Violation 을 방지하려고 했는데, 매 타임마다 Locking 을 하고 그 값을 대기하다보니

대기시간중에 다른 스레드가 해당 구조체에 엑세스 할 기회를 만들어주게 되어

결국 해당 값이 바뀌어 버리는 일이 생길 수 있다는 것이고, ( Race condition )

이 과정을 단순히 Remote port 에 대한 참조카운트를 추가하여

해당 값을 Lookup 할때 (디스크 제거시에만) 참조값을 줄이면 되기 때문에

디스크를 제거/검색 하는 과정에서 매번 디스크 뮤텍스를 걸 필요가 없게 수정한 이다.

개 빡치는것은, 내가 분명 두가지 모두 최종 Call trace 는 다르지만 모두 libfc 모듈에서

fc_lport / fc_rport 관련 구조체에 대한 Referencing 에서 나오는 이슈이므로

동일한 것같다고 이야기 했지만,

커널 개발팀에서 계속 "아니다, 다르다, 재현해서 다시 살펴봐야 한다" 라고 우기는 바람에

고객이 너무 빡쳐서 "그냥 다 때려쳐 씨밤, 너네 구려!" 이랬다는 것...

졸라 중요고객이라고 지랄들을 해대서,

어떻게 해야 할지 몰라 냅뒀더니 두달이 지난 지금에서야

We are unable to reproduce the crash in QA setup which is often hard to do because it is not possible to replicate customer environment in the lab.
However, The two core dumps even though showed different symptoms, but the underlying root cause is the same, the kref count being zero. 

Rajan provided the Ksplice patch and rpms which has the fix to address kref handling.

'응 그래, 재현이 졸라 안되서 미안하지만...그래도 동일 이슈맞는것 같아

우린 이미 앞선 패치를 통해 솔루션을 제공했어. 우린 잘했다고'

이지랄을 떨고 있다.

개발자들 일안하냐? 내가 호구로 보이냐? ㅎㅎㅎㅎㅎ 아몰랑!


'Skills > mY Technutz' 카테고리의 다른 글

kernel Dump Analysis #18  (0) 2019.05.11
Kernel Dump Analysis #17  (0) 2019.04.04
libfc: Update rport reference counting bug - 1368175  (0) 2018.03.29
Kernel Dump Analysis #16  (0) 2018.02.22
Kernel Dump Analysis #15  (0) 2018.02.19
Kernel Dump Analysis #14  (0) 2018.02.13
posted by mirr

댓글을 달아 주세요

Skills/mY Technutz 2018. 2. 22. 13:27

와.. 대박... 일이 엄청나게 들어와..

공격적으로 오라클 리눅스를 장사하면 내가 쓰일만한 일이 있긴 하구나 하면서도

일이 이렇게 많아지면 개빡쳐서 아무것도 하기 싫어지는 현자타임같은게 온다는..

무튼, 요즘 핫하게 밀려들어오는 업무량 덕에 코어분석 일도 숭풍숭풍 막 쳐 들어오는..

이번에는 레드햇 커널 즉, Oracle Linux 에서 Cmompatibility 를 위해 제공하는

Redhat Compatible Kernel ( RHCK ) 와 관련된 커널 덤프 분석을 해주시겠다.

Technical Preview 이기 때문에 해당 부분에 대한 코드는

ASSERTCMP(op->state, ==, FSCACHE_OP_ST_DEAD);

로 수정되는 식으로 상황을 정리하는 코드가 추가된 것 같다.
( 수정된 코드 다운받거나 찾기 귀찮다! 바쁘다. 점심안에 써야한다 글을. )

물론 픽스는 해당 fscache 모듈을 사용하지 않도록 하거나,

( cachefilesd 데몬을 Disable 한다. )

ELSA-2017-0307 또는 ELSA-2017-0817 ( RHSA-2017-0817 대응) 에서 권고하는

kernel-2.6.32-696.el6 이후의 최신 버젼으로 업그레이드 하거나

6.8 GA kernel-2.6.32-642.el6 이하 커널로 다운그레이드 하면 된다고

Redhat 에서 이야기 하는 것 같다.

사실 개인생각으로는 커널 업그레이드를 해봤자 동일할것 같긴 해서

구지 필요하지 않다면 Cachefilesd 를 Off 하는게 더 좋을것 같다고 생각된다.

mount option 에서 fsc 가 생겼는데 이게 없으면 자동으로 fscache 가 활성화 된다고 하는 것 같다.

레드햇 이슈라 명확하게 솔루션 코드가 확인되지 않는 상태라 잘 모르겠으나

분석 방법이랑 워크어라운드 기입되 있음 이미 난 충분히 세계를 위해 기여한거시다...

'Skills > mY Technutz' 카테고리의 다른 글

Kernel Dump Analysis #17  (0) 2019.04.04
libfc: Update rport reference counting bug - 1368175  (0) 2018.03.29
Kernel Dump Analysis #16  (0) 2018.02.22
Kernel Dump Analysis #15  (0) 2018.02.19
Kernel Dump Analysis #14  (0) 2018.02.13
Kernel Crash dump Analysis - #13  (0) 2017.12.20
posted by mirr

댓글을 달아 주세요

Skills/mY Technutz 2018. 2. 19. 13:18

저번 14 에 이어진 내용이라고 볼 수 있다.

지난시간 왜 시스템 커널 분석에서 fc_stat, fc_lport 에 집중했는지 나오는 부분이다.

이전 게시글에서와 동일하게 ffff880103e67a00  를 참조하는 부분에서 문제가 발생하였다.

따라서 fc_lport 에 관련되어 메모리를 사용함에 있어, 이미 해제된 메모리를 재참조하거나,

메모리 corruption 조건이 발생되고 있다는 것을 의미한다.

역시 저번 게시글과 같이 해당 코드에 논리적 오류나 Race condition 발생 여부,

Used-after-freed 현상에 대해서 더 살펴봐야 하는 상태이지만,

코드 상 특별히 문제될만한 부분은 발견되지 않았다는 점이 현 문제의 가장 큰 난관이다.

지금은 개발팀에서 in-house 로 동일 환경을 구성 후 재현테스트를 하고 있는 중이다.

이는 장비에 대한 특성 ( 펌웨어 문제 또는 하드웨어 관련 된 정보의 괴리 ),

즉 하드웨어 문제를 배제할 수 없는 의심스러운 부분이 있다는 것을 의미한다.



posted by mirr

댓글을 달아 주세요

Skills/System 2017. 4. 3. 17:44

흥미있는 버그를 발견했다.. 물론 알려진 버그인데,

분석하는 과정을 개인적으로 업데이트하고 공유한다.

이슈는 엑사데이타에서 사용하는 UEK2 (2.6.39-400.264.1) 커널의 crash 이다.

이는 사실상 Async/Direct IO 상태로 사용시 ext4 의 io end 처리 구조체 및 펑션에서

더블프리가 될 수 있는 버그로 알려져있으며 패치가 나와있다.

Fixed -> UEK2 2.6.39-400.277.1


posted by mirr

댓글을 달아 주세요

Skills/Linuxworld 2017. 1. 8. 13:38


원문 : https://lwn.net/Articles/710545/

이번주 LWN 에서 내가 흥미로와 하는 내용중 하나인 메모리 관련 기사가 올라와 번역해 본다.


----

즉, 기존의 빠른 발전을 위해 여러가지 추가해 왔던 메모리 관리 관련 기능들을 예로 들면서,

25년이 넘은 만큼, 리눅스 개발 전반적으로 "더 나은 진화를 위한 한발 물러섬"

에 대한 내면적 리뷰가 필요한 시점임을 전달하고 싶었던 것이 아닐 까 싶다.

자세한 내용은 다음주 수요일 이후 공개가 되니 직접 살펴보기 바란다.

근데 이렇게 이야기 해주면 다들 알긴 아나? 좀 회의가 들어 요즘 -_-


posted by mirr

댓글을 달아 주세요

Skills/System 2016. 12. 1. 11:06

KSpliceOracle 에서 인수한 Live patching 솔루션이다.

현재 RHEL 의 Kpatch 나 Suse 의 KGraf 가 비슷한 역할을 하고 있지만,

오라클에서 KSPlice 를 인수함으로 인해 대체된 프로젝트들이고,

단연 KSplice 의 기능이나 편의성이 더 뛰어난 상태이다.

일전에 LWN 기사 중 Kernel Live patching 에 대한 번역글을 포스팅 했었는데,

기사중, Micro-conference 중 User-space Bootless patch 에 대한 문의가 있었고,

커널개발자들이기 때문에 모두들 그 부분을 무시하고 넘어갔었다고 전한 적 있다.

오라클은 2015년 부터 KSplice 의 User-Space Bootless patching 을 준비해 왔고,

2015년 Oracle Announce utube 에서 Larry Alison 회장의 소개가 진행된 적 있다.

User-space 패치 가능한 영역은, 물론, 보안에 관련된 패키지들에 한정된다.

어플리케이션 레벨은 패치 후 리부팅하면 그만이지 않나? 라고 생각하기 쉽지만,

의외로 많은 크고작은 기업들의 시스템 엔지니어들은 이 부분에 대해서

많은 머리숱이 고난을 받았었음을 기억해야 한다.

"네, 당신들이 신경안쓰고 있던 부분... 오라클이 합니다."

PS : 그래.. 광고성 성향이 강하고 오라클 빠돌이같은 느낌이 있지만,
     그렇다고 오라클 리눅스 쓰라는거 아냐..쓰지마, 안써도 돼...
     지금 고객들만으로도 난 충분하고 귀찮어... 더 안늘어나도 돼...
     일하기 싫단말야... 고객들따위는 개에게나 줘버................ 아, 내가 "개" 지 ㅠㅠ

posted by mirr

댓글을 달아 주세요

Skills/Drill or Guard 2016. 10. 6. 22:15

오랜만에 올리는 글,


https://fossbytes.com/this-single-line-of-code-can-crash-a-linux-system/


현재 위와 같은 systemd 관련 서비스 거부 취약점이 발견되면서

다소 두려워 하는 관리자들도 있을 것이라고 생각하여 대처방안을 생각해 보았다.


사실 대처방안이라고 하기에도 그렇고,  단순한 Workaround 가 아닐지도  모르고

어차피 패치된 버젼 나오면 그 패키지를 사용하면 되지만,


언제 나올지 모를(금방 나올테지만)  패치,  그리고 리부팅이 필요할 것으로 보이므로

리부팅이 부담되는 사람을 위한 꼼수를 생각해 내었다.


(원래 어제 하도 난리일때 기사도 제대로 안보고 있다가 오늘 퇴근하고 집에오면서 생각좀 해봄)


1. NOTIFY_SOCKET 을 세팅하는 과정에 시스템은 어떤  감사가 이루어 질까?


-  해당 내용을 확인하기 위해 우선 audit 설정을 해주었다.


# auditctl -w /usr/bin/systemd-notify -p x -k systemd_notify


위 설정은 systemd-notify 가 수행되면 systemd_notify 라는 라벨(키워드)  로

audit log 를 남기도록 설정한 룰이다.


간단히 테스트 해보자.


#  NOTIFY_SOCKET=/run/systemd/notify systemd-notify "test"

# ausearch -i -k systemd_notify

type=PATH msg=audit(10/06/16 08:02:05.657:79) : item=1 name=(null) inode=379981 dev=00:1d mode=file,755 ouid=root ogid=root rdev=00:00 obj=s
ystem_u:object_r:ld_so_t:s0
type=PATH msg=audit(10/06/16 08:02:05.657:79) : item=0 name=/usr/bin/systemd-notify inode=325712 dev=00:1d mode=file,755 ouid=root ogid=root
 rdev=00:00 obj=system_u:object_r:systemd_notify_exec_t:s0
type=CWD msg=audit(10/06/16 08:02:05.657:79) :  cwd=/root
type=EXECVE msg=audit(10/06/16 08:02:05.657:79) : argc=2 a0=systemd-notify a1=test                <<<<<<
type=SYSCALL msg=audit(10/06/16 08:02:05.657:79) : arch=x86_64 syscall=execve success=yes exit=0 a0=0x2491450 a1=0x232cfe0 a2=0x246f850 a3=0
x7ffde71a9e40 items=2 ppid=4535 pid=5743 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root ses=6 tty
=pts1 comm=systemd-notify exe=/usr/bin/systemd-notify subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=systemd_notify


여기서 execve 타입에서 해당 Argument 가 나오는게 확인되었다.


자,  그럼 일단 감사시스템은 구축했으니,  그냥 누가 이거 실행하면 조지면 되는건가?


하지만 이미 시스템은 망가진 뒤  일텐데?


2.  기존 systemd-notify 를 대체할 만한 방법이 없을까?

-  이 아이디어를 바탕으로 고민해보다가 누구나 간단히 사용 할 수 있을 만한

Bash scripts 를 이용한 커맨드 대체 를 생각했다.


#!/bin/bash

if [ -n $NOTIFY_SOCKET ]
then
    systemd-notify_org $1
fi


그래,  문제의 원인은 NOTIFY_SOCKET 이라는 환경변수의 사용이며,

notify 프로그램 뒤에 Argument 를 넣지 않았다는 것이 핵심이었다.


따라서,  이를 체크하여 만약 해당 내용이 Null 이 아니라면

( 나의 테스트로는 Redhat 계열에선 기본 Null 인거같다 -  레댓계열밖에 몰라!)

해당 변수를 먼저 해제하거나 그냥 해당 내용을 echo 로 뿌려주면 될 것 이다.


만약 해당 변수가 아무것도 없다면,  혹은 정상적으로 사용된 것이라면

원래 있던 이름이 바뀐 systemd-notify 를  실행시켜주면  아무 문제 없이 수행 될 것이다.


테스트 해 보았다.


[root@perftest ~]# NOTIFY_SOCKET=/run/systemd/notify systemd-notify "test"
[root@perftest ~]# NOTIFY_SOCKET=/run/systemd/notify systemd-notify ""
systemd-notify_org [OPTIONS...] [VARIABLE=VALUE...]

Notify the init system about service status updates.

  -h --help            Show this help
     --version         Show package version
     --ready           Inform the init system about service start-up completion
     --pid[=PID]       Set main pid of daemon
     --status=TEXT     Set status text
     --booted          Check if the system was booted up with systemd
     --readahead=ACTION Controls read-ahead operations
[root@perftest ~]# echo $NOTIFY_SOCKET

[root@perftest ~]#


Audit 내용은 아래와 같다.


type=PATH msg=audit(10/06/16 09:05:33.533:199) : item=2 name=(null) inode=379981 dev=00:1d mode=file,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:ld_so_t:s0
type=PATH msg=audit(10/06/16 09:05:33.533:199) : item=1 name=(null) inode=6081 dev=00:1d mode=file,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:shell_exec_t:s0
type=PATH msg=audit(10/06/16 09:05:33.533:199) : item=0 name=/usr/bin/systemd-notify inode=437427 dev=00:1d mode=file,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:systemd_notify_exec_t:s0
type=CWD msg=audit(10/06/16 09:05:33.533:199) :  cwd=/root
type=EXECVE msg=audit(10/06/16 09:05:33.533:199) : argc=2 a0=/bin/bash a1=/usr/bin/systemd-notify         <<<<<
type=EXECVE msg=audit(10/06/16 09:05:33.533:199) : argc=3 a0=/bin/bash a1=/usr/bin/systemd-notify a2=test
type=SYSCALL msg=audit(10/06/16 09:05:33.533:199) : arch=x86_64 syscall=execve success=yes exit=0 a0=0x1af3c00 a1=0x1b44a40 a2=0x1b28870 a3=0x7ffc2e391ca0 items=3 ppid=2191 pid=7914 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root ses=1 tty=pts0 comm=systemd-notify exe=/usr/bin/bash subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=systemd_notify
----
type=PATH msg=audit(10/06/16 09:05:36.597:200) : item=2 name=(null) inode=379981 dev=00:1d mode=file,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:ld_so_t:s0
type=PATH msg=audit(10/06/16 09:05:36.597:200) : item=1 name=(null) inode=6081 dev=00:1d mode=file,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:shell_exec_t:s0
type=PATH msg=audit(10/06/16 09:05:36.597:200) : item=0 name=/usr/bin/systemd-notify inode=437427 dev=00:1d mode=file,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:systemd_notify_exec_t:s0
type=CWD msg=audit(10/06/16 09:05:36.597:200) :  cwd=/root
type=EXECVE msg=audit(10/06/16 09:05:36.597:200) : argc=2 a0=/bin/bash a1=/usr/bin/systemd-notify
type=EXECVE msg=audit(10/06/16 09:05:36.597:200) : argc=3 a0=/bin/bash a1=/usr/bin/systemd-notify

type=SYSCALL msg=audit(10/06/16 09:05:36.597:200) : arch=x86_64 syscall=execve success=yes exit=0 a0=0x1b45a20 a1=0x1abb040 a2=0x1b28870 a3=0x7ffc2e391ca0 items=3 ppid=2191 pid=7916 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root ses=1 tty=pts0 comm=systemd-notify exe=/usr/bin/bash subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=systemd_notify


사실 -z 를 넣어야 하는게 맞나?  싶었는데 테스트 해본결과 -n 로 넣어 놓는게 훨씬 무탈하고 자연스러워

해당 내용을  유지하기로 했다.


각자 script 및 원본 명령 위치등은 알아서 수정하면 될거같다.  보안적으로.


간단한 테스트만 하고 올린 글이라 각자 상황에 맞게 이런 컨셉으로 보완해 사용하시길.


아주 간단히 테스트만 한두시간 해보고 올리는 글이니 문제가 된다면 삭제할 예정

(나에게 책임이란 없다.)


끝.

posted by mirr

댓글을 달아 주세요

  1.  Addr  Edit/Del  Reply Favicon of https://seblog.mirr4u.com BlogIcon mirr

    심심해서 몇번 테스트 해본 결과 위와같이 스크립트를 통하게해서 직접적으로 /run/systemd/notify 라는 소켓파일에 Null 인자로 write access 하는 부분만 막으면 큰 문제 없는 것 같다..
    어차피 패치 나올것이므로 간단하게만 테스트 한거니, 컨셉만 생각해서 적용하면 될거같다...

    2016.10.07 00:00 신고

Skills/mY Technutz 2016. 1. 14. 23:08

정말 백만년만의 글인가.... 하고 보니 작년 6월에 글 썼었네... ㅎ


일년에 두개정도면 많은거 같은데..


무튼 어느순간 일이 증가하고, 같이 일하는 사람들이 생겼다 없어졌다 다시 생기는 등


신경써야 할 것들이 많았던 터라 영 공부를 할 수 없었는데,


최근 회사 엔지니어들이 주고받는 메일링 리스트를 보고 다시 이쪽저쪽 들쑤시려고 하는 중...


메일링 리스트에 고객이 많은 메모리를 쓰고 있고, 어떤 이슈가 생겨서, kdump 설정을 통해 덤프를 떠


분석하려고 하는데 이게 자꾸 설정이 안된다는 것이다..


답변으로 오는 것들은 대부분 이것저것 crashkernel 값을 조절해 보라 정도...


그래서 살펴보았다 어떤 공식을 통해 해당 영역이 Allocation 되는지를 말이다.




여기서 내 결론은 일반적으로 crash kernel 은 전체 메모리를 완벽하게 다 뜬다고 볼 수 없으며,


Kernel 에 대한 영역을 위주로 커널이 갖고 있는 PTE 등의 Linked List 정보를 덤프한다고 볼 수 있으므로,.


물리적 메모리 양이 많이 있다고 해서 crashkernel 을 무턱대고 올리는 것이 아니라,


2G - 256M 를 기준으로  64M 씩 올려가면서 테스트 해야 한다는 것이다...


참고로 레드햇 기준으로는 2G-256M, 6G - 512M, 8G - 768M, 그 이상이어도 869M 넘지 않도록


권고하고 있다... ( 난 8G - 768 M 도 too much 하다고 본다.. )


이슈에 대한 추이가 기대되는 부분이다...














posted by mirr

댓글을 달아 주세요

  1.  Addr  Edit/Del  Reply BlogIcon k

    최대...768m...그정도면..1tb 메모리도이상없는듯...
    메모리보다는....장착되어있는..디바이스에 따라 차이를 보이는듯하네요...물론..메모리도 상관 있는듯...

    2016.01.15 18:56
    •  Addr  Edit/Del Favicon of https://seblog.mirr4u.com BlogIcon mirr

      드라이버 등에 영향을 받을 수 는 있죠, 문제는 100테라 넘는 애들에 대한 문제인데, 이부분에선 사실 글에서 언급하지 않은 copy_to_user 의 개선이필요하다고 보는거죠 이부분에서 memcpy 부분의 효율 개선이나 다른 방식의 improve 가 필요하다고 봐요.. OOM 이 발생했다는게 이슈니까요 ㅎㅎ

      2016.01.16 00:14 신고
  2.  Addr  Edit/Del  Reply BlogIcon k

    최대...768m...그정도면..1tb 메모리도이상없는듯...
    메모리보다는....장착되어있는..디바이스에 따라 차이를 보이는듯하네요...물론..메모리도 상관 있는듯...

    2016.01.15 18:56
  3.  Addr  Edit/Del  Reply Favicon of http://seblog.mirr4u.com BlogIcon 미르

    낚임.. 결국 800M 로 덤프 성공.. OOM 부분은 역시 각종 모듈이 영향을 준 것이긴 한데, kdump 에선 이를 위해 blacklist 라는 옵션을 kdump.conf 레벨에서 제공..
    이를 다 블랙리스트로 처리하고 dump 를 뜨면 충분히 떠진다는 점....

    2016.01.18 15:20