쓰레드 와 메모리맵을사용중에 문제 입니다.

nhm34의 이미지

안녕하세요 쓰레드를 사용하여 (쓰레드 생성 100개)

1쓰레드당 메모리맵에서 조건에 맞는 값을 1000라인정도
를 5초에 한번씩 검색하고 검색값된값을 메모리맵에서
지우려고합니다. 쓰레드가 100개이다보이
성능이 좋아보이지는 않네요

위의 조건에서 성능을 늘리는 좋은 방법이 있을까요?

익명 사용자의 이미지

각 라인이 고정사이즈를 갖는다면(옵셋을 그냥 한큐에-상수시간에- 안다면)일단 지울때, 진짜루 지우지 말고 헤더를 두어 플래그만 세팅하도록 하면 다소 나아질것입니다.

또한, 지우기 위해서 100개가 lock에 시달려야(동기화 시간)할텐데, 이 문제는 시스템의 동기화메카니즘을 어떻게(무엇을 선택하거나/만들어서) 빨리 할것인가에 달려있는듯합니다.

쓰레드가 다수개일때, SMP라면 유리할 수 있지만, context switch overhead도 무시못할 변수입니다.

음, open problem으로 보입니다. 그냥 최선을 다해야 겠지요. 최적의 쓰레드개수를 생성하고(1~100까지) 테스트를 수행해서 실험적으로 구해보시는게 ....

쌀밥의 이미지

비동기 I/O를 사용하고 쓰레드 수를 좀 줄이시는 방법이 좋지 않을까 생각됩니다.
(IOCP처럼...)

어떤 환경의 어떤 용도인지 알려주시면 좀 더 적절한 방법을 같이 생각해볼 수 있을것 같습니다.

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

cinsk의 이미지