http://www.research.ibm.com/people/m/michael/ieeetpds-2004.pdf에 설명 된 hazard pointer 방법론을 사용하여 lockless queue를 구현했습니다. 구현시 GCC CAS 명령어를 사용하고 스레드 로컬 구조에 대해서는 pthread 로컬 저장소를 사용합니다. 이제 필자가 작성한 코드의 성능을 평가하려고합니다. 특히이 구현과 잠금 (pthread mutexes)을 사용하여 큐를 보호하는 방법을 비교하려고합니다.
"잠긴"대기열과 비교해 보았 기 때문에 여기에 묻습니다.이 방법은 잠금이없는 구현과 관련하여 더 나은 성능을 제공합니다. 내가 시험해 본 유일한 테스트는 큐에 10.000.000 랜덤 작업을 수행하는 4 코어 x86_64 시스템에서 4 스레드를 생성하는 것이며 잠금없는 버전보다 훨씬 빠릅니다.어떻게 잠금없는 큐의 성능을 평가할 수 있습니까?
내가 따라야 할 접근 방식을 제안 할 수 있는지, 즉 대기열에서 어떤 종류의 작업을 테스트해야하는지, 그리고 잠기지 않은 코드가 시간을 낭비하고 있는지 확인할 때 어떤 도구를 사용할 수 있는지 알고 싶습니다.
나는 또한 성능이 4 개 스레드가 주요 개선이 충분하지 않은 이유만으로 잠금없는 큐에 대한 더 나쁜 것을 가능하면 이해 할...
감사
나는 현대 OS 잠금 장치가 그렇게 나쁘지 않다는 것을 알고 있으며, 나의 질문이 충분히 정확하지 않다는 것도 알고있다. 나는 모든 스레드가 대기열에이 작업을하는 동안 잠시 대기열에 넣으려고 시도하는 임의의 대기열에 넣기/빼내기를 시도했다. 또한 4 개의 코어가 충분하지 않다는 것을 알고 있습니다. 속도 향상을 볼 수 있는지 이해하려고합니다. 당신의 대답은 유용했고, 나는 당신이 제안한 것을 시도 할 것입니다. – Raffo