jmbrugge / pyrit

Automatically exported from code.google.com/p/pyrit
0 stars 0 forks source link

pyrit serve - does not operate at full possible speed #122

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
I have 2 machines
1. i7 + GTX295 (27000PMK max)
2. P4 + 4890 (18000PMK max)

What is the expected output? What do you see instead?
I expect, that using pyrit serve on 1 machine I will have a cluster with
speed approx 45000PMK or at least 95% of that 

what I have:

Computed 37535.80 PMKs/s total.
#1: 'CUDA-Device #1 'GeForce GTX 295'': 11744.7 PMKs/s (RTT 2.9)
#2: 'CUDA-Device #2 'GeForce GTX 295'': 11538.4 PMKs/s (RTT 2.8)
#3: 'CPU-Core (SSE2)': 659.1 PMKs/s (RTT 2.8)
#4: 'CPU-Core (SSE2)': 503.2 PMKs/s (RTT 2.7)
#5: 'Network-Clients': 9851.7 PMKs/s (RTT 0.5)

I expect #5 should be at least 15000 or so.

either network is bottleneck (15000 * 50 bytes *8 = 6MBps less then 54M) or
all CPU cores dedicated to PMK calc is not enough to serve network at the
same time. Probably it is a good idea try to free 1 core for network client
only??? I'm ready to make any possible tests....

What version of the product are you using? On what operating system?
pyrit 0.3.1-svn
Ubuntu 9.10 2.6.31-19
Network is WiFi 54M ping 2-5 ms

Please provide any additional information below.

Original issue reported on code.google.com by Vladimir...@gmail.com on 26 Feb 2010 at 7:24

GoogleCodeExporter commented 9 years ago
tested 100Mbit network through router - no success (10000 out of 27000 
available)

tested 1Gbit PC-to-PC connection - success now I have 25000PMK using small 
notebook.

BTW - why "pyrit serve" is so speed-hungry?

Original comment by Vladimir...@gmail.com on 26 Feb 2010 at 7:44

GoogleCodeExporter commented 9 years ago
made a filnal test:
connection speed:PMK through SERVE
 11M wifi: 7800PMK
 54M wifi: 8500PMK
100M wired: 9200PMK
1Gbit wired: 25000PMK

most probably this is not broadband issue - only difference I have ,that 1Gbit 
has
ping time 0.15-0.2ms vs 2-10ms. 

my feeling, that this issue is possible to improve...

Original comment by Vladimir...@gmail.com on 26 Feb 2010 at 8:19

GoogleCodeExporter commented 9 years ago
Part of the problem is that Pyrit currently does not scale the size of the
network-buffer to the performance of the client. This means that fast clients 
(in
terms of PMKs/s) have to submit a lot of RPC-requests to keep up.

You can try opening cpyrit/network.py and change the line "essid, pwbuffer =
self.server.gather(self.client.uuid, 5000)" (line 47 in svn r228) and increase 
the
buffersize to e.g. 20000.

Original comment by lukas.l...@gmail.com on 26 Feb 2010 at 11:44

GoogleCodeExporter commented 9 years ago
tried buffer sizes from 5000, 10000 up to 65536 - no success. Maximum - 
10000PMK over
wifi network

BTW I have the folowing error on server:
~$ pyrit serve
Pyrit 0.3.1-dev (C) 2008-2010 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+

Serving 1 active clients; 13262 PMKs/s; 0.0 TTS Exception in thread Thread-25:
Traceback (most recent call last):
  File "/usr/lib/python2.6/threading.py", line 525, in __bootstrap_inner
    self.run()
  File "/usr/local/lib/python2.6/dist-packages/cpyrit/network.py", line 93, in run
    self.server.scatter(self.uuid, encoded_buf)
  File "/usr/lib/python2.6/xmlrpclib.py", line 1199, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.6/xmlrpclib.py", line 1489, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.6/xmlrpclib.py", line 1235, in request
    self.send_content(h, request_body)
  File "/usr/lib/python2.6/xmlrpclib.py", line 1351, in send_content
    connection.send(request_body)
  File "/usr/lib/python2.6/httplib.py", line 743, in send
    self.sock.sendall(str)
  File "<string>", line 1, in sendall
error: [Errno 104] Connection reset by peer

Original comment by Vladimir...@gmail.com on 26 Feb 2010 at 4:46

GoogleCodeExporter commented 9 years ago
Trying to find where is the bottleneck of my network I found very interesting
configuration:

pyrit serve at GTX295 machine (maximum 26500PMK/s) and pyrit benchmark on very 
slow
MacBook C4D x 1.8G shows about 10000PMK over Network client. Network is 54M 
wifi.

I have manually adjusted utils.py (for testing purpose) to disable all CPU's on
client machine so only Network client was involved to PMK calc - and WAW!!! 
22500PMK
over network client. So I miss 350x2 = 700PMK/s but win 12500PMK over network!

I hope this will help to find where is bottleneck in network in SERVE mode

Original comment by Vladimir...@gmail.com on 27 Feb 2010 at 4:41

GoogleCodeExporter commented 9 years ago
I'm guessing pyrit is 'focused' on generating its own PMKs and only giving a low
prioritization to the network aspect.

Original comment by adam.k...@gmail.com on 28 Feb 2010 at 1:26

GoogleCodeExporter commented 9 years ago
your only going to get a maximum real world transfer speed over wifi of about 
14MB/s

Original comment by thefixe...@gmail.com on 1 Feb 2011 at 8:32

GoogleCodeExporter commented 9 years ago
This a real issue. I am testing the distributed computing power of pyrit + cuda 
with EC2 instances.

I started using 2 of them which made me achieve around 80.000 PMK/s

When I bumped them to 4, 3 servers and one client they still kept at 80.000. 
The servers went at 40.000 PMK/s with just 2 of them, but with 4 they just went 
down to 12.000 PMK/s each.

It can't be bandwidth because I was using a cluster in EC2 which has a 10Gb 
connection between machines. 

Each machine is a GPU cluster one which has the following specs:
Processor
33.5 EC2 Compute Units (2 x Intel Xeon X5570, quad-core "Nehalem" architecture)

Memory
23 GB

Platform
64-bit

Network
10 Gbps Ethernet

Local Storage
1690 GB instance 64-bit storage (2 x 840 GB, plus 10 GB root partition)

GPUs (cluster GPU instances only)
Two NVIDIA Tesla M2050 "Fermi" GPUs with 3Gb each

Everything installed and working correctly. Attached you can see some captures 
of it running with 2 instances and then with 4. Also you can see that 
cpyrit-cuda is installed and working.

Unfortunately I don't have a capture of the 4 instances working but the output 
was the same, 80.000 PMK/s and the servers were the ones going down.

Could it be that the client is unable to manage the servers while generating 
his on PNK as adam said? looks liek it to me.

Original comment by itxakase...@gmail.com on 31 May 2011 at 11:28

Attachments: