linux 에서 프로세스간에 hash table 공유가 가능한 방법이 있는지 궁금합니다.
글쓴이: trymp / 작성시간: 수, 2015/07/08 - 10:08오전
linux(64bit) Ram 4G 환경에서 URL 을 검사하는 프로세스를 구현하고 있습니다.
근데 이 프로세스가 많은 양을 처리하기 위해서 멀티프로세스인 상태인데요.
URL 정보를 가지고 있는 hash table 이 너무 커서 프로세스가 메모리를 많이 차지하고 있고
여러 프로세스다 보니 시스템 메모리를 너무 많이 소모하고 있습니다.
그리고 다른 제한적인 문제로 postgre 나 mysql 같은 DB 프로그램은 올리기 어렵구요.
빠른 처리가 필요하다 보니 다른 프롯세스와 소켓 통신을 이용한 IPC 는 기능상 맞지 않습니다.
그래서 hash table 을 공유할수 있는 빠른 IPC 나 메모리소모를 덜 수 있는 방법을 찾고 있습니다.
제 머리가 나빠서 그런지 잘 생각이 안나네요....ㅠㅠ
고수님들의 조언 부탁드립니다.
Forums:
...
음 잘은 모르겠지만 제가 생각하기에는 멀티프로세스 대신 프로세스를 하나만 띄워서 멀티쓰레딩을 이용하면, hash table을 하나만 만들면 되고 모든 쓰레드가 공유할 수 있을 것 같은데요?
shared memory 는 어떤가요 ? mmap
shared memory 는 어떤가요 ?
mmap 사용하시면 될 거 같습니다.
어떤 상황인지 궁금하네요~~
-----------------------------
in the real-time scheduler !
SQLite3는 어떤가요?
프로그램에 내장시킬수 있는 소형 DB 라이브러리 SQLite3를 써보세요
프로세스간 데이터를 공유하는데는 다음 방법을 쓰면
프로세스간 데이터를 공유하는데는 다음 방법을 쓰면 됩니다.
1) 송수신통로 사용 (파이프, 소켓)
2) 공유메모리
다량의 데이터 블럭에서 임의 위치를 수시로 접근해야 한다면 공유메모리가 간편할듯 하지만 생성 가능한 최대용량이 있으니 알아서 하셔야 합니다. 공유메모리 쓰면 동시수정하면 안되는 곳에서 동시수정 막기 위한 세마포어는 거의 필수라고 봐도 됩니다.
Written By the Black Knight of Destruction
댓글 달기