2010-08-29 26 views
4

Ma machine de développement est un MacBook (qui a bien sûr kqueue). Cependant, en production, nous utilisons Linux (qui utilise bien sûr epoll). Évidemment, pour connaître les caractéristiques de performance de mon code, je dois l'utiliser avec epoll. Cela dit, les performances que je vois sous kqueue sont-elles une approximation correcte de ce que je vais voir avec epoll? Ou y a-t-il des situations où la performance peut être significativement différente? Pour l'essentiel, il semble que kqueue et epoll soient assez similaires en termes de performances, mais je n'ai pas vraiment fait de tests très poussés.Y a-t-il des différences de performances majeures entre epoll et kqueue?

Si cela fait une différence, j'utilise tornado en Python.

+0

Je suis sûr que vous obtiendrez des réponses, mais ma suggestion est de trouver vous-même! J'utilise un Macbook moi-même et ce que je ferais, c'est installer Linux en tant que machine virtuelle dans VMWare Fusion et y installer epoll. Pour que la comparaison soit juste, je ferais une seconde machine virtuelle comme FreeBSD et je testerais kqueue avec ça. –

Répondre

4
+1

Cela ne répond pas tout à fait à ma question. Dans le cas qui a été comparé, il semble que la performance était à peu près la même. Mais je demande surtout s'il y a des différences significatives entre les deux. Y a-t-il des cas limites où l'un joue sauvagement différemment de l'autre? –

5

kqueue surclasse epoll selon l'Université Berkeley principalement parce que epoll ne supporte pas plusieurs mises à jour d'intérêt dans un seul appel système, alors que kqueue peut le faire en utilisant kevent().

Il existe également un document technique sur les différences entre la comparaison 2 et la comparaison des performances.

http://www.eecs.berkeley.edu/~sangjin/2012/12/21/epoll-vs-kqueue.html