이 블로그 검색

2017년 9월 19일 화요일

클러스터나 슈퍼컴퓨터에서 계산한 파일을 가져오기와 관련한 데이터 압축이야기



나 같은 경우는 MD simuation을 하는데, 얻는 rawdata 중에는 입자의 d.o.f 만큼의 실수 정보와 자기 인덱스와 관련한 정보 등을 text형식인 것이 있다. 

이런 것들이 입자수를 곱하고, 여러 시간의 스냅샷을 포함하다 보면 이 데이터의 양은 참으로 클 수 밖에 없다. 

내 경우에는 이 데이터의 양이 한번 돌릴 때마다, 12GB나 되는 굉장한 양이 나온다.  그 중에 더미가 있어서 실제로는 8기가 가량 되는 것 같다. 

이 데이터를 그대로 네트웍으로 받는다면 기가비트 환경에서 1분정도, 
100메가비트 환경에서 10분정도를 최저로 잡고 소요되나, 같은 건물이 아닌 이상 저 속도가 나올리가 없다.  나 같은 경우는 대략 20메가비트 정도 나오면 잘되는 듯하는 상황이라, 이대로 받아버리면 안정적으로 계속 다운로드가 될 때, 50분이 걸린다.  1분이나 10분 정도는 충분히 잠시 일보고 오는 식으로 소비할 수 있는 시간이다.   그런데 50분이란 시간도 그럴까? 아닐 것이다. 

(문제는 내가 저 시간을 아껴서 제대로 사용하는 사람이고 싶은 사람이지 그런 사람이 아니라는거...)


그렇다면 방법은 압축을 해서 데이터량을 줄인 후, 방법을 사용해야 할 것이다. 그렇다면 어떤 압축툴을 사용해야 할까?  

  보통 보관용과 전송용으로 차이를 둘 수 있겠다. 압축이란건 투자한 시간만큼 공간을 줄일 수 있다. 보관용은 공간을 줄이는데 관심을 가진다. 적당히 시간을 더 투자하고 공간을 적정선까지 줄이는 것이 목표라면 bzip2으로 시작해서 좀 더 극단적인 부분까지 줄이는게 목표라면 xz(or lzma:7zip의 알고리즘 사용)를 사용하게 된다. 

  우리는 전송용이기 때문에 당연히 gzip을 사용하면 되겠다. 리눅스는 Archiving tool과 Compresion tool을 따로 두는식으로 문화가 형성되어 있어서 Archiving tool로는 tar를 사용하고, gzip을 사용하여 압축을 많이 한다. 이렇게 해도 보통 zip(pkzip)보다는 속도나 압축률면에서 우수하다고 한다. (근거달기는 귀찮다. )

대게 tar cvfz 압축파일이름.tar.gz 내역들 

으로 그냥 사용하지만 문제는 data가 워낙 많아서 시간이 많이 필요하다는 거다. 그런데 기본으로 linux 배포판에 있는 gzip은 병렬로 계산하지 않기 때문에 이것도 한 세월 걸린다는 단점이 있다.  (gzip bzip2 xz 모두 그러함)

하지만 이쪽 사람들은 필요하면 만드는 사람들이기에 찾으면 해당하는 툴이 있다.   나같은 경우는 pigz라는 툴을 사용한다. gzip의 이름을 섞어서 말장난 하는 식의 이름이지만 매우 훌륭하다. 압축알고리즘 자체가 병렬화 되는 것은 아니고, 압축을 할 때, 어차피 파일을 특정 사이즈 마다 쪼개서,  압축을 하니까? 쪼개진 부분을 여러 계산유닛들이 기존 알고리즘으로 압축을 하면 되는 방식이다. 

그렇기 때문에, pigz를 컴파일해서 설치하는데는 root 권한 따위는 필요하지 않고, 필요한 라이브러리는 왠만해서는 서버에 있다. 이 친구들이 쓰는 헤더파일이 없으면, 루트가 제공하는 툴말고는 아무것도 못쓸 정도로 환경이 척박하므로 그냥 기대를 말고, 기존 루틴대로 살면 되겠다. 

tar 명령어에 외부 압축프로그램 바로 지정하는 방식을 사용한다면, 
tar -I pigz   -cvf blah.tar.gz blah blah    압축하기 
tar -I pigz   -xvf blah blah blah     압축풀기
이런 식으로 사용하면 되고 귀찮고 하드공간이 넉넉하면 tar로 먼저 묶고 
pigz로 압축 pigz -d로 풀기를 하면 되겠다. 

압축하는 시간이 기존 싱글쓰레드로 8분가량 걸린다면 16노드인 서버에서는 30초 정도로 끝날테니  굉장히 시간을 절약할 수 있다. 

수치해석 rawdata 전용 압축 툴이나온다면 압축률을 더 높일 수 있을 것 같으나, 그런건 없는 것 같고, 대략 압축을 하면 압축률이 42%정도 나온다. 

파일이 작으면 이건 개 뻘짓이지만. 파일이 커서 굉장이 좋은 방법이 되었다. 
기존 방법으로는 통으로 50분이 걸리던지, 아니면 21+압축시간 걸리던 것이 21+압축시간/nodes  로 시간이 확 줄어드어 쓸만해 진다. 

음 대학교가 연구기관이라면 kist 같은 국가 연구기관들과 100Gb 네트웍으로 연결되고 내부망은 최소 기가비트 건물간은 10기가비트로 연결되어야 정상이 아닐까...?

건국대학교는 이과대학이 내부망이 아직 100메가비트이고, 연구기관들끼리 연결된것은 우회망이 없어서인지 이쪽 대역폭을 어떻게 나눠쓰는지 모르겠는데 너무 느리다. 빨리 좀... 어떻게 해주면 좋겠다. 

아 그리고 이런짓을 할 필요 없이, rsync 나 scp에 압축 옵션이 있다. 
그런데 scp는 이어받기 옵션이 없어서 배제 대상이 되고 rsync에 압축옵션을 넣어서 다운받으면 되겠다. 근데 이건 익숙하지가 않아서 전송용으로만 쓰고 있다. 

  그리고 데스크탑을 리눅스로 쓰는 나같은 리눅서는, 이쪽 철학을 지켜서 각 프로그램들의 기능을 최소화하고 서로 연결해서 사용하는 것이 심적으로 편하다. 그냥 이렇게 쓰도록 하자.  

2017년 9월 14일 목요일

흠 3D나 VR쪽에 조금 관심이 생겨서 조금 봤음...

일단 3D는 한참 유행하더니... 사양산업이 된듯...

일단 디스플레이는 여러 종류가 있는데...  사용되는 안경에 따라
패시브 액티브 방식으로 나뉜다. 

패시브는 LG에서 쓰는 방식인데... 한줄씩 편광 필름을 껴서 편광 안경을 쓰면  가로줄 전체 해상도중 하나씩 건너뛰며 반토막 나는 방식이고, 

액티브는 삼성에서 쓰는 방식인데 프레임을 늘려서 두배로 만들고 안경이 열심히 열렸다 닫혔다(뭐가??? )  하면서 한쪽눈만 보는 식으로 해서 보여주는 방식이다.

액티브의 장점은 가로줄 그러니까 세로 해상도가 반토막 나지 않는 것이고, 대신 디스플레이랑 안경이랑 싱크를 맞혀야 하고, 안경이 열심히 변화해야해서 배터리가 들어가야한다는 거다...    디스플레이를 수동으로 맞추는 방식으로 맞출 수 있을 듯하니 뭐... 안경이 배터리 등으로 인해 무거운게 큰 단점이지뭐...   그 외는 좌우 타이밍이 달라지고 깜박임 때문에 어지러움이 있을 수 있다는 것과   보다가 배터리가 나갈 수도 있고, 전용 안경이 비싸다는 장점이 있겠다.

패시브는 일단 단점이 저 해상도 반토막이 문제인데 3d패널이라고 나와 있는 친구들은 LG가 TV를 중점으로 만들기 때문인지 1080p 2160p 제품 밖에 없다. 보통 HD 영상이라고 하면 최하가 720p인데 1080이 반토막나서 540이 되어버리니 중국 북한식 SD TV 수준으로 떨어져서 사람들 불만이 많았는데
일단 4k에서 반토막 나는건 사람눈으로 충분히 만족스러운듯...

모니터용으로 1440p 제품있으면 딱이겠지만... SMPTE에서 TV영상용으로 정해둔 해상도가 아니라서 Blue-ray등 제품으로 나올 수가 없어서 무쓸모라서 그런지 없다. 
  좀 돈 좀쓰면 LG것은 쓸 수 있다. LG패널이 들어간 중소기업 제품중에 잘뽑으면 있고 알려진 친구들도 있는데 100은 넘어간다....

뭐 이래저래 막 복잡한 이야기가 있지만 결국에는 그래서 구글 카드보드식 VR또는 3D로 가는듯... 복잡한 이야기 하지말고 그냥 양안 앞에 두개 디스플레이를 가져다 놓자...

어 선이 없어서 자유롭고 센서가 있네... 그러면 고개를 돌리면 화면을 바뀌게하자...

이런식으로 출발하더니 ... 뭔가 굉장해짐...

조만간 달빛 조각사를 눈으로 체험하게 될 것 같음...



음... 아마 아직 이런 아이디어는 넷상에 없는 것 같은데... 영화가 잘되면 감독판이 나오고 (안돼도 나올수도 -_-)   하는데...

진짜 3인칭 관찰자 시점으로 영화 전체를 흝는 방식이 나올 것 같음...

소나기 같은 소설을 다시 리메이크 한다면... 본편 자체가 그런식으로 나올 수도 있겠지만...  엄석대한테 맞는게 너무 리얼해서 PTSD가 와서 -_- 문제가 생기고... 그러ᅟᅳᆫ 이상한 생각이 머리속으로... 아이고...




블로그는 글을 정돈해서 써야하는데 SNS처럼 써버렸네...
아무도 안오는데 뭐 어떰...

연구실 서버에 gridengine(구 sun grid engine)을 깔려다가 안되서 멘붕. 대신 로컬머신 task-spoler를 찾았다.



hostname이 이상해서 메세지가 제대로 안가서 안되는 줄 착각하다가,
결국은 원인을 발견했으나... 해결방법이 없다. 내가 만든 코드가 아닌데 제공해주는 패키지에서 segmentation fault가 나오니 방법이 없다.

디버그 패키지를 제공해주면 어디서 에러가 났는지도 확인이 가능하겠지만,... 별 도움되는 정보가 없다. core dump  읽어보니 무슨 명령어에서 일이 발생한건지는 알겠는데... 역시 소스를 까봐야 하는거고 내가 이거 까는거 하는 사람이 아니니... 참...  나중에 centOS 가상화PC에다가 구축을 해봐야겠다.

다른 주요한 클러스터들이 centOS쓰는건 이유가 있겠지...

패키지만 깔아도 되는 상태를 만드는게 목적일 것 같으니까...




저 sgmentation fault가 spool머시기에서 문제가 생기는 거라
관련검색어로 검색을 하다보니

로컬환경에서 일반 작업 spooling 하는 도구를 알게 되었다.
다른 컴퓨터한테 일시키는건 수동으로 할 수 있을 것 같고, 순차적으로 일을 하게하는건 이 친구를 사용하면 될듯...

일단 기본 사용법은 간단함.

일단 맨페이지를 보면
NAME
      ts - task spooler. A simple unix batch system

SYNOPSIS
      tsp [actions] [options] [command...]

      Actions:  [-KClhV]  [-t [id]] [-c [id]] [-p [id]] [-o [id]] [-s [id]]
      [-r [id]] [-w [id]] [-k [id]] [-u [id]] [-i [id]]  [-U  <id-id>]  [-S
      [num]]

      Options: [-nfgmd] [-L <label>] [-D <id>]

DESCRIPTION
      ts  will  run by default a per user unix task queue. The user can add
      commands to the queue, watch that queue at any moment,  and  look  at
      the task results (actually, standard output and exit error).

요렇게 되어 있는데 tsp와 command 사이는 tsp의 옵션이고 command부터는 내가 할 작업을 넣어주면 된다.

액션과 옵션은 사실 tsp에게 주는 똑같은 파라미터라고 생각할 수 있지만 옵션은 command와 관련한 것이고
    표준 입출력 파일을 만들거냐 말거냐(-n)
    gzip으로 압축해서 내보낼거냐   (-g)
    백그라운드 작업으로 안보내고 할거냐 (-f)
    결과를 이메일로 보낼거냐 (-m)
    작업에 라벨을 붙일까?   (-L label)
     전 작업과 관련이 있는데 잘 모르겠다. (-d)
     id 옵션까지 주어서 같은 터미널에서 안해도 할수 있는드 (-D )
     작업이 꽉찾을 때, 원래는 대기하고 있으나 이 옵션을 쓰면
      메인 리턴 값을 2로 주고 즉시 종료 된다.   (-B)
와 같은 것들이 있는데 사실 -L옵션말고는 쓸일이 없을 것 같고,

액션쪽은 쓸게 몇개 있는데 일단 -S [num] 코어수를 정하는 옵션  등이다.

음 작업이 여러개 들어갈 때, 그리드엔진처럼 작업을 대기상태로 올려놓을 수 있는 거면 좋겠는데 저기위 설명을 봤을 때는 아닌 것 같아서 테스트가 필요할 듯...


10초뒤 수정 정보 ... 이거 개인 사용자들 압축 작업을 한다거나 하는 사람들이 쓰면 참 좋을듯...
 Label마다 따로 slot수 지정하는 기능만 있어도 굉장히 행복할 수도...



2017년 9월 1일 금요일

엠씨몽이 일으킨 바람 하나.

엠씨몽이 일으킨 바람 하나가 남자 장애인들(법적으로는 조금 미달이라 아닌...) 마져 군대로 끌고 가게 하고, 불만이 쌓여가고, 인구는 줄어들고,  결국 여성징병제 청원까지 이어지네...


  엠씨몽 덕에 신검이 강화되다 보니, 군대오면 안되는 친구들이 군대 오는  비율이 점점 늘어가는 모양이다. 내가 입대하던 2006년에도 그러한 친구들은 있었다. 그러나 비율은 매우 낮았다. 뭐 훈련소마다 비만소대 운영하고 그러기는 했지만...
   그 땡볕에서 훈련 받으면 몸무게가 안 빠질 수가 없다. 입대하기전까지 8kg을 찌워서 88kg으로 군대를 갔는데 한 50일 만에 75kg이 되있으니 이런 사람은 문제가 아니고,  제 3야수교에서 정신지체장애 100리(10년전 표현으로 2%부족한) 전에 가까운 친구가 있었고, 이 친구는 대형차를 모는 곳으로 주특기를 받아서 훈련을 받았다.
  나를 비롯해 많은 야수교 동기들은 그 친구가 정상적으로 군대생활을 못할 것이라 생각했다.

   뭐 그러고 나서 그 친구를 볼 일이 없을 줄 알았는데, 나중에 본 장소는 벽제에 있는 국군 벽제 병원이다. (제 3야전군 1군단 병원) 뭐 거기에서 환자복을 입고 있는 것을 발견했다. 차사고가 났거나 내무생활에서 문제가 생겨서 후송을 왔거나, 뭐 그런거겠지...  그 때도 이런 사람이 있었다.

  복무 부적합을 받아야 하는 사람들이 그 곳 병원에 가득하다. 우리 부대에서도 입대 후 십자인대가 나가서 매주 외진을 나가는 중대 선임이 있었고,(주당 하루 일과 빠짐) 아예 후송가 있던 선임도 있었다.(장기입원) (아빠군번)  이 사람들은 십자인대가 나갔지만 의병 전역 사유가 100리 앞이라 그냥 정상 전역할 때까지 저러고 있었다. 장갑차와 달리 전차는 입구가 아래쪽에 없다. 내릴 때 무조건 뛰어 내린다. 군에서 트럭을 타면 발걸이가 있지만 충격이 보통이 아니다.

  그 때, 우리 전차대대는 전차승무원 4명을 채우지 못했다. 인구 부족 때문이었다. 전시가 아니니 군대는 회사에 가깝다 보니 신병이 오면 행정요원들 채우기 바쁘다. 거기다가 군대와서 다치는 사람들도 많았다. 그리고 가끔 복무부적합 병력들이 들어온다.    뭐 전쟁나면 예비군을 통해 완편이 가능했다. 그래도 ... 예비군까지 하면 부중대장과 같은 예비 편제까지 채울 수 있었으니 그
래도 어떻게는 굴러갔을 거다. ...
(안경 쓴 사람은 전차 승무원으로 안쓰던 관례를 깨고 조금씩 생기던 시대여서...  하향평준화의 시작.... )

  그런데 지금 군대는 , 그 때보다 더욱 정원 가득 못채우고 있을 것이고,  행정병 인수인계 시간이 안 나올 만큼 빠듯하게 병력 배치를 해야할거고, 여전히 군대와서는 다칠거고, 의병제대는 부담스러우니 깐깐하게 할거고, 복무부적합 요원들은 10명중에 1.5명은 될건데...      이거 제대로 굴릴 수 있는 것 맞나???

  결국 나올 이야기가 나왔다. 여성과 남성의 신체차이는 이제 뭐 반대논리로 적당하지 않을 만큼, 여성의 평균 체력 미달인 남자들이 군대로 어거지로 나오고 있는 상황이니 시끄럽긴 하겠지만 결국은 이루어 질거다...


ps. 통일되어도... 옆나라가 일본하고 중국이니 ... 통일은 별 변수가 안된다...

가장 많이 본 글