use poll instead of epoll for better performance