2011-08-20 3 views
2

ruby ​​1.8.7을 사용하고 있으며 언제든지 1.9 이상으로 업그레이드 할 수 없습니다.루비의 스레드로 핑을 최적화 할 수 있습니까?

나는 루비가 녹색 스레드를 가지고 있으며, CPU 기반의 어떤 것도 멀티 스레딩을 통해 얻지 못한다는 것을 알고 있습니다.

그러나 루비에서 다중 쓰레드 핑을 시도했습니다. 스크립트에서 네트워크의 N 개의 기계를 핑 시도합니다. 기계가 응답 할 때 새로운 스레드를 작성하고 다른 스레드와 연결을 시작할 충분한 시간이 있습니다 숙주. 그러나 내가 보는 것은 멀티 스레딩이 실제로 성능을 악화 시킨다는 것입니다.

루비의 스레드와 최적화 된 핑을하기위한 제안 사항이 있으십니까?

+0

핑은 어떻게 구현됩니까? 아마도 퍼포먼스에 영향을 미치는 일종의 글로벌 인터프리터 락이있을 것입니다. 또한 JRuby를 시도해 볼 수도 있습니다. 가능한 경우 더 나은 스레드 구현이 있습니다. – Casper

+0

@Casper - 여기에 전역 인터프리터 잠금이 있는지 어떻게 알 수 있습니까? – Fanatic23

+0

코드를보고 각 파트를 분석하지 않고 코드가 어떻게 상호 작용하는지 파악하지 않고도 알 수있는 방법이 없습니다. 그래서 핑잉을 실제로하는 방법에 대한 스 니펫을 게시 할 수 있다면 궁금 해서요. 거기에 문제가 있는지 확인할 수 있습니다. – Casper

답변

1

EventMachineICMP implementation을 사용해야합니다. icmp4em의 저자는이 모든 것을 사용하는 방법을 보여주는 두 가지 예제도 제공합니다.

관련 문제