Message queue 갯수 조절하기

리눅스에서는 여러가지 IPC(Interprocess Communication) 을 지원한다.

그 중, 메시지 큐의 경우 기본으로 잡혀있는 Open 가능한 최대 갯수는 16개로 지정되어 있는데, 간혹 여러 개의 메시지 큐를 사용하는 프로그램을 사용한다거나 등의 이유로 많은 갯수의 Message Queue가 필요한 경우 에러가 발생한다.

오늘 있었던 일도 그 중 하나였는데, 계속 해서 프로그램 구동시, Message Queue의 생성이 실패하며 자꾸 프로그램이 죽는 현상이 발생했다. 한참을 고민하다가 선임의 도움으로 해결할 수 있었다.

문제의 파악은 icps -q 명령어로 시작한다.

현재 운용 중인 많은 수의 메시지 큐. 이것이 문제였다.

[cube@cube1 RUN]$ ipcs -q

—— Message Queues ——–
key        msqid      owner      perms      used-bytes   messages
0x00015d40 0          cube       666        0            0
0x00015d41 32769      cube       666        0            0
0x00018388 1441794    cube       666        0            0
0x00018389 1474563    cube       666        0            0
0x000182bb 5079044    cube       666        0            0
0x000182eb 5111813    cube       666        0            0
0x000182ec 5144582    cube       666        0            0
0x000182b9 5177351    cube       666        0            0
0x000182ba 5210120    cube       666        0            0
0x000182bc 5242889    cube       666        0            0
0x0000ea60 5505034    cube       666        0            0

 

곧바로 확인 해 본 생성가능한 메시지 큐 갯수. 16개다. 당연히 문제가 생길 수 밖에.

[cube@cube1 RUN]$ ipcs -lq

—— Messages: Limits ——–
max queues system wide = 16
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384

구글링을 해보니 커널소스의 msg.h 헤더 파일에서

#define MSGMNI 16 /* <= IPCMNI */ /* max # of msg queue

부분을 원하는 양으로 수정한 후, 다시 커널 컴파일을 수행하면 된다고 한다. 하지만 저 부분 하나만을 위해 커널 컴파일을 하기에는 너무 비효율적이다. 다행히 다른 방법이 있었다.

sysctl 명령어를 통한 수정 방법도 있었다. 재부팅이 되면 이 설정은 다시 초기화가 되지만 방법과(rc.local 파일에 설정한다거나..) 때에(잠시만 사용할 경우) 따라서는 요긴한 방법이다.

root 계정으로 로그인한 후, sysctl 명령어를 통해 메시지 큐의 갯수를 늘리는 방법은 아래와 같다.

sysctl -w kernel.msgmni=32

다음은 위의 명령어 이후에 확인한 메시지 큐의 내용들이다.

[cube@cube1 RUN]$ ipcs -q

—— Message Queues ——–
key        msqid      owner      perms      used-bytes   messages
0x00015d40 0          cube       666        1            1
0x00015d41 32769      cube       666        0            0
0x00018388 1441794    cube       666        0            0
0x00018389 1474563    cube       666        0            0
0x000182bb 5079044    cube       666        0            0
0x000182eb 5111813    cube       666        0            0
0x000182ec 5144582    cube       666        0            0
0x000182b9 5177351    cube       666        0            0
0x000182ba 5210120    cube       666        0            0
0x000182bc 5242889    cube       666        0            0
0x0000ea60 5505034    cube       666        0            0
0x0000ea61 5537803    cube       666        0            0
0x0000ea62 5570572    cube       666        0            0
0x0000ea63 5603341    cube       666        0            0
0x0000ea64 5636110    cube       666        0            0
0x0000ea65 5668879    cube       666        0            0
0x0000ea66 5701648    cube       666        0            0

 

[cube@cube1 RUN]$ ipcs -lq

—— Messages: Limits ——–
max queues system wide = 32
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384

 

뜨거운 침묵 – 백지연

뜨거운 침묵.

침묵이 뜨겁다면 무엇이 될까?
그것은 무거움이 된다.

반대로, 침묵이 뜨겁지 않다면 무엇이 될까?
그것은 가벼움이 된다.

책에서는 침묵을 굉장히 여러가지 비유로 표현했지만 나는 침묵을 무게에 비유한 부분이 제일 마음에 들었다.

말 한마디가 가지는 무게는 침묵에서 나온다.
말이 가지는 의미는 그 말을 하는 사람이 어떤 경험을 했는지에서 비롯된다.
오랜 인고의 시간동안 지켜낸 침묵과 그 동안의 경험 속에서 비로소 나오는 말 한마디가 큰 의미를 가질 수 있다.

 

그리고.. 아는 자의 침묵.

아는 만큼 보인다. 하지만 그만큼 모르는 부분도 보인다.

특히 이부분은 나에게 굉장한 부끄러움을 남겨 주었다.
내 작은 경험과 지식만으로 모든 것을 설명하고 이해하려고 했던 내 지난날을 생각해보는 계기가 되었다.
아니 반성의 계기가 되었다..

 

————————————————————————

사실, 이 책은 내가 스스로 보게 된 책이 아니다.
생각이 깊고, 참 배울점이 많은 한 후배가 이 책을 추천해주면서 읽게 되었다.
그런데 이책을 추천하면서 나에게 해 준 말이 있다.

“오빠는 이 책 좀 읽어봐야 해요.”

에구, 부끄러워라.  🙂

그래, 그거다.

웃자, 늘 웃자.
그래, 그거다.

가지기(Have) 보다는 하기(Do)에 더 중점을 두자.
그래, 그거다.

꿈을 잊지말자. 내 눈앞에서 출렁이고 있는 그 꿈들을 향해 계속해서 손을 뻗는 것을 잊지말자.
그래, 그거다.

끝까지 잊지말자. 절대로..
그래, 그거다.

아프니까 청춘이다. – 김난도

“젊음은 젊은이에게 주기에는 너무 아깝다.”

책의 제일 첫 부분에 나오는 말이다. 아깝단다. 너무 아깝단다.
그리고, 그 너무 아까운걸 나는 가지고 있다.

가끔 난 이런 생각을 한다.

“내가 내 젊음을 낭비하고 있는 것은 아닐까?”

내가 이 생각을 하는 때는 내가 무엇을 하고 있는가와 많은 관계가 있는데, 주로 아침에 침대에서 뒹굴뒹굴할때 이 생각을 한다.
이 물음에 대한 대답은 Yes, No가 아니다.
몸을 일으켜 무엇인가를 하느냐, 안하느냐이다.

내 나이 이제 겨우 27. 이제 막 대학교를 졸업하고, 직장생활을 시작한지 1년이 지난 시간이다.
무엇을 하면 낭비를 하는 것이고, 무엇을 하면 낭비를 하지 않는 것일까? 이런 물음에 대한 대답은 나로써는 아직 알 수 없다.
그래도 그 동안의 적지않은 여행 경험과 내가 만났던 수 많은 사람들로부터 배워 정리한 나름대로의 철학이 있다면 그건 다음과 같다.

“아무 것도 하지 않으면, 아무일도 생기지 않는다.”

아무일도 생기지 않는다는게 나쁘다는 뜻이 아니다. 그냥 그렇다는 것이다.
그리고, 반드시 아무일도 생기지 않는 것도 아니다. 아무것도 하지 않아도 일들이 뻥뻥 터지는 것을 우리는 자주 겪는다.
그래도 난 이렇게 표현하는 것이 마음에 든다.

“아무 것도 하지 않으면, 아무일도 생기지 않는다.”


….
이런 말들.
뭔가 나에게 끊임없는 에너지를 준다.
마음 속 깊은곳에서부터 올라오는 뜨거운 무엇인가를 느낀다.
무엇인가를 해야한다는 의무감을 심어주기도 하며 계속해서 무엇인가를 하다보면 언젠가는 반드시 결과가 생기리라하는 확고한 믿음이 생기기도 한다.

하지만 진짜로 실행에 옮기는 것은 이것과는 다른 이야기.
귀찮고, 힘들고, 하기 싫고.. 핑계는 많다.
정말로 실행으로 옮기는 것은 정말 이것과는 다른 이야기다. 한심하게도.

그리고 꿈…
가만히 앉아 있아서 눈을 감으면 하나 둘씩 떠오른다. 내가 무엇을 하고 싶은지.

너무나 많다. 그 중 대부분은 내일이면 잊혀질 것들이고, 어떤 것들은 몇년이 지나도록 기억에 남기도 하고, 또 어떤 것들은 실제로 해보기도 한다. 또 어떤 것들은 생각이 바뀌기도 한다.

그런데.. 그것들 중에 몇개를 이루었던가?
돈, 명예, 지위같은 사회적 기준이 아니라 순수한 마음으로 생각한 꿈은 과연 몇개나 되었나?

내가 가지고 있는 생각과 너무나 같은 이야기를 하는 것 같았다. 아니, 내 이야기를 하는 것 처럼 들렸다.
아니, 나에게 이렇게 이야기하는 것 같았다.

“너, 그러지마.”

 

우연일까. 이 책에서 본 처음보는 글귀.

“If you don’t know where you going, just go.”

분명 의미가 다르고 이야기하는 바도 다르고, 처음보는 글귀지만 나에겐 너무나 익숙하게 들렸다. 너무나 익숙하게..

 

그리고.. 마지막 책장을 덮은 후에 한동안 몸을 움직이지 못했다.
그래, 나는 아직 청춘이다.