O_NOMTIME

Personal Computer/Linux 2015. 5. 26. 23:31 posted by tolkien

http://lwn.net/Articles/643892/


mtime은 file 내용이 수정된 마지막 시간을 가리킵니다. 최근에 mtime을 자동으로 update하지 않도록 하는 patch가 올라왔습니다.
이는 Ceph filesystem(http://lwn.net/Articles/258516/)과 같이 mtime을 사용하지 않는 경우, 성능을 향상시키는 효과가 있습니다. 하지만, NFS나 system backup과 같이 mtime을 이용하는 경우, 이 option은 매우 위험한 선택입니다. 그리고, system suspend와 같은 상황에서는 더욱 복잡해집니다.

어쨌든 O_NOMTIME option은 손쉽게 system 성능을 개선할 수 있습니다만,
application 개발자가 sync하는 것을 잊는 경우, file system에 손상을 줄 수 있습니다.

Persistent memory and page structures

Personal Computer/Linux 2015. 5. 26. 23:15 posted by tolkien

http://lwn.net/Articles/644079/


persistent memory(or non-volatile memory), 쉽게 NOR flash를 생각하면될 것같습니다. SSD에 대해서 direct-access를 하는 경우도 있을지도.

어쨌든 이 유형의 h/w는 cpu에서 직접 접근가능하다.라는 이점이 있어서 이것을 이용할 수 있는 방법에 대한 논의를 간단히 다룬 내용입니다.

단순하게 ROM처럼 page로 분할해서 mapping해버리면 1TB가 넘는 경우, 관리하는 데만많은 memory를 사용하므로 좋지 않습니다. 이에...
1. persistent memory에 대해서 Page Frame Number(PFN)을 사용.
 - http://lwn.net/Articles/643437/ - by Dan Williams
 - page structure를 손대서 persistent memory인 경우, page가 아닌 PFN을 사용
2. Directly mapped persistent memory page cache
 - http://lwn.net/Articles/644114/ - by Ingo Molnar
 - page structure를 일반 memory가 아닌 persistent memory에 저장

아직 어떤 방법도 code로 다 구현되어 있지 않고, 논의중입니다.

https://lwn.net/Articles/610174/

block device에서 data를 access하려면 data를 page cache에 올린 다음에 읽습니다. file system도 block device에 접근하기 위해서 page cache를 이용하지요. 그런데, 직접 접근가능한 block device(간단한 예로 RAM이나 NOR Flash)위에 file system을 올려서 사용한다면? page cache가 없는 편이 성능에 도움이 되는 상황도 있습니다.

이런 시도는 2005년 즈음에 ext2 file system에 XIP(excute in-place)를 구현하기도 했습니다. 위 기사는 DAX(directy access)라는 새로운 시도에 대한 얘기입니다.

ramfs와 같은 ram-based file system을 쓰는 것도 하나의 방법이긴 하지만, 전원이 나가면 사라지는 RAM이 아닌 Flash와 같은 NVM(non-volatile memory)위에서 NVM 전용 file system이 아닌 ext4와 같은 일반 file system에서 성능 향상을 시도하는 것으로 알고 있습니다. kernel 4.0부터 ext4에서는 지원된다고 합니다.

https://lwn.net/Articles/644906/

http://comments.gmane.org/gmane.linux.kernel.api/10603 - patch & discussion

http://permalink.gmane.org/gmane.linux.kernel.api/10636 - example(?)
http://coffeenix.net/doc/security/STACK_fingerprinting.txt
http://www.packetinside.com/2010/08/%ED%8C%A8%ED%82%B7%EC%A0%95%EB%B3%B4%EB%A1%9C-%EC%9B%90%EA%B2%A9%EC%A7%80-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%A5%BC-%EC%B6%94%EC%A0%95%ED%95%9C%EB%8B%A4-p0f.html

TCP 연결의 초기 packet에는 해당 IP를 운영하는 system의 정보를 많이 담고 있습니다. 문제는 그 정보는 kernel 내부에 있다는 점. 그 정보를 user-space에 있는 server들이 얻을 수 있도록 해주는 patch가 최근 merge되었다고 합니다.

setsockopt() 함수를 TCP_SAVE_SYN option과 같이 listen() 함수 이전에 호출한 다음, accept()로 얻은 socket에 대해서 getsockopt() 함수를 TCP_SAVED_SYN option으로 얻은 TCP/IP header를 통해서 정보를 얻을 수 있다고 합니다.

Delay-gradient congestion control

Personal Computer/Linux 2015. 5. 22. 00:21 posted by tolkien

https://lwn.net/Articles/645115/
http://www.spinics.net/lists/netdev/msg329391.html - patch
http://en.wikipedia.org/wiki/Network_congestion

network 혼잡제어 알고리즘(network congestion-control algorithm)중 하나로 CAIA delay gradient(CDG)라는 것이 제안되었답니다.

기존 알고리즘은 packet loss가 발생하기 시작하면 network이 혼잡한 것으로 인식하고, packet 전송 갯수를 줄이는데 비해 CDG는 round-trip time(RTT)를 이용합니다. 구체적으로는 RTT_min값이 증가하면 network의 혼잡도가 증가하는 것으로 인지한다고 합니다.

기존 알고리즘과 CDG와 공존과 같은 문제를 풀어야 적용될 것같습니다.
CDG에 대한 자세한 내용은 http://caia.swin.edu.au/cv/dahayes/content/networking2011-cdg-preprint.pdf 를 보시면 됩니다.

Memory protection keys

Personal Computer/Linux 2015. 5. 21. 10:42 posted by tolkien

http://lwn.net/Articles/643797/

https://lkml.org/lkml/2015/5/7/764 - patch set.


linux system call중에서 mprotect() 가 있다.

할당받은 memory에 대해서 read/write/execute를 제어한다. 이는 s/w로 구현되어 있다.

그런데, intel에서 차세대 64bit CPU에서는 MPK(Memory Protection Key)라는 기능을 제공하겠다고 한다. 

별도 register를 제공하는 형태가 될 듯. 이에 대해서 기존 system call 구현으로 충분한데, 굳이 h/w 구현까지 신경써야 하는 의견에 대해서 Alan Cox의 답변은 

"here is real-world demand for the ability to change protection on gigabytes of memory at a time, and that mprotect() is simply too slow."

PacketFence 4.0

Personal Computer/misc 2013. 5. 13. 13:12 posted by tolkien

http://www.packetfence.org/home.html

http://www.packetfence.org/news/2013/article/packetfence-40-released.html


PacketFence[1] is a free network access control system — the system that decides whether you get to use the local WiFi network, for example.

라고 소개되어 있습니다. 기능은...


  • BYOD - Let people bring their own devices
  • Provide guest access
  • Role-based access control
  • Perform compliance checks
  • Eliminate malware
  • Simplify network management

 라는데, 일단 지켜보기.


CAP_SYS_RAWIO에 관한 논란

Personal Computer/Linux 2013. 3. 22. 13:42 posted by tolkien

http://lwn.net/Articles/542327/


kernel에 CAP_COMPROMISE_KERNEL capability를 이용해서

 MSR write을 제한하는 patch가 나오면서

 linux kernel의 capability에 대한 논란이 있었습니다.


linux kernel의 capability 문제는...
 1. 특정 기능 사용에 대한 제한에 관여하는 capability가 추가된다.
 2. 그에 따라서, capability를 사용하는 application이 수정되어야 한다.
     (예전에 작성한 code를 다시 손봐야한다!)
 3. 이전에 대한 호환성을 유지한다고 하면 security hole에 대한 수정사항은 어떻게 대처할 것인가?
 4. capability에 대한 전체적인 roadmap이 없다.
인 것으로 파악하고 있습니다.

linux kernel의 capability는
 CAP_SYS_RAWIO를 iopl(), ioperm()에 적용하는 것으로 시작했는데,
 자꾸 늘어나는데, 어떤 function()에 대해서 어떤 capability를 적용할 것인가,에 대한
 큰 그림이 없는 상태에서 하면서 정리하려고 하는 것같습니다.
 (root 권한과 CAP_SYS_ADMIN을 구분은 어떻게 해야 할 것인가?)

어쨌든, 이런 것은 자발적인 개발자에 의존하는 linux kernel 개발 모델의 약점이 아닐런지.

OpenBadges 1.0

Personal Computer/misc 2013. 3. 22. 12:08 posted by tolkien

Mozilla 재단에서 OpenBadges Service를 시작했습니다.

http://openbadges.org
에 들어가면 뭔지 참 알기 힘드네요.
다행히 모질라 한국 web site에 간단히 소개가 나와있습니다.

http://www.mozilla.or.kr/community/blog/1204

"이 서비스는 온라인 혹은 오프라인에서 학습 과정을 인증해 주고,
 이를 증명하기 위한 획기적인 새로운 온라인 표준 기술입니다.

이는 Mozilla와 맥 아서 기금과의 협력을 통해 지난 2년간 개발을 진행시켜 온 프로젝트입니다.
 이 프로젝트는 다양한 방법으로 학습하고 있는 온라인 교육을 정식으로 인증받을 수 있는 수단이 없고,
 학위나 졸업 증서와 같은 이전의 인증 방법은 그 사람이 배운 기술
 즉, 엔지니어에게 글쓰기 능력, 프로젝트 관리 능력, 프로그램 언어별 능력 등을 자세하게 알려줄 수 없었습니다

또한, 다양한 교육기관에서 습득한 기술을 한곳에 정리해 표시할 수 있는 방법도 없었습니다.
 Open Badges은 그러한 상황을 바꾸는 것입니다. 디지털 배지를 새로운 단계로
 끌어올려 보다 강력하고 네트워크화된 신뢰성을 높혀 주게 됩니다.

현재 600개 이상의 주요 기관이 Open Badges을 사용해
 학력, 경력, 평생 학습의 성적에 따라 배지를 발행하고 있습니다.
 또한, Mozilla에서는 Open Badges에 의해 교육의 미래가 웹 기반으로 진화될 수 있다는 가능성을 열었다고 생각합니다."

제게 다가오는 느낌은
이전 정부가 시도했던 소프트웨어 개발자 경력관리하겠다.라는 삽질의
괜찮은 대안이라고 생각합니다.

MongoDB 2.4

Personal Computer/misc 2013. 3. 21. 11:57 posted by tolkien
MongoDB 2.4가 나왔습니다.
"NoSQL" database system이라고 합니다.
뭔지 모르면 일단 googling...
 
data를 가지고 이리저리 지지고 볶는 것이 아닌 (RDBMS처럼)
몇가지 특징적인 data만 가지고 오는 것에 최적화된 system인 것같다.라는 느낌입니다.
특징은 I/O가 빠르고, 분산처리가 되니까 downtime이 적고,
대신 RDBMS가 추구하는 안정성이나 정합성은 크게 신경쓰지 않은 것같습니다.
(그에 대한 비판...
 
NHN에서 Hadoop를 도입하면서 MongoDB랑 비교한 글이 있어서 link 겁니다.
 
Hadoop과 MongoDB를 이용한 로그분석시스템