본문 바로가기

Bioinformatics/Technology23

STL map 값으로 정렬(sort by value) 본 문서는 다음의 내용을 참고하여 실제로 사용될 수 있는 코드만을 정리했다. http://stackoverflow.com/questions/279854/how-do-i-sort-a-vector-of-pairs-based-on-the-second-element-of-the-pair 일단 map에 있는 값을 vector로 복사한다. std::vector vec(map.begin(), map.end()); 다음으로 정렬을 수행한다.부스트(boost)를 이용할 경우 다음과 같다. std::sort 2013. 3. 8.
리눅스에서 사용할 CPU 갯수 지정하기 어떤 상황에서 CPU 개수를 조정해야 하는 상황이 올까? 바로 다음과 같은 상황이다. 가령 비트 연산을 많이 하는 코드를 작성했다고 하자. 일반적으로 비트 연산은 속도가 빠른데다가 최적화가 더해지면 원하든 원치 않든 하이퍼 쓰레딩과 동작하게될 가능성이 있다. 개인 컴퓨터 환경에서는 그러나 저러나 별 상관이 없다. 하지만, 자원을 나눠쓰는 서버가 있고, 이 서버에서 여러분의 프로세스가 과도하게 많은 프로세서를 사용한다면 이를 제한해서 다른 사람들이 CPU를 이용할 수 있도록 해줘야 할 것이다. 그렇다면, 어떻게 하면 되는가? 이것은 프로세서 어피너티(processor affinity)에 의해서 조절된다. 리눅스의 경우 다음 명령어로 사용하려는 CPU를 조절할 수 있다. taskset -c 0-7 명령 & .. 2013. 3. 7.
병렬 프로그래밍할 때 자바 쓰레드의 낮은 우선 순위(Linux) 자바 쓰레드는 경쟁이 심한 Linux 환경에서 이용될 때, 일반 우선 순위를 가진 쓰레드들은 성능이 급격히 하락한다. 그 이유는 자바에서 NORMAL의 우선 순위는 높은 nice(원래의 OS 쓰레드 우선 순위에 더해지는 우선 순위 값) 값을 가진다. Linux에서는 낮은 값일 수록 먼저 CPU 자원을 획득할 수 있기 때문에, 결국 이 말은 그냥 기본값으로 동작 시키면 주변에 많은 프로세스들이 동작하고 있을 때, CPU 자원 획득을 양보한다는 뜻이다. 물론 root 권한이 있다면, nice, renice와 같은 명령어들로 java 프로세스의 우선 순위를 변경할 수 있다. 하지만, root 권한이 없다면, 쓰레드를 사용하는 여러분의 프로그램은 성능이 매우 나빠질 것이다. 해결하는 방법은 다음과 같다. jav.. 2013. 2. 13.
top 명령어 열 설명 다음 문서는 http://wiki.vpslink.com/Linux_Command_Reference:_top의 내용을 편역한 것이다.기본 출력 top - 03:31:05 up 7:40, 1 user, load average: 0.00, 0.00, 0.00Tasks: 15 total, 1 running, 14 sleeping, 0 stopped, 0 zombieCpu(s): 0.1% us, 0.0% sy, 0.0% ni, 99.9% id, 0.0% wa, 0.0% hi, 0.0% siMem: 512000k total, 115552k used, 396448k free, 0k buffersSwap: 0k total, 0k used, 0k free, 0k cached PID USER PR NI VIRT RES S.. 2013. 2. 13.