thaliproject / Thali_CordovaPlugin

Thali p2p plugin
MIT License
226 stars 44 forks source link

Bluetooth Multiple Connection Perf Measurements #1535

Open yaronyg opened 8 years ago

yaronyg commented 8 years ago

We need to understand a number of things about how Bluetooth behaves under load.

  1. We need to re-run the tests in thaliproject/Thali_CordovaPlugin#1000 to see what happens if we use all Samsung and all Nexus 6p devices. The reason this matters is that we saw some very severe fall offs in Bluetooth perf when Samsung talked to a Samsung and Nexus 6P device. We need to know if this is just some bug with Samsung/Nexus or if there is something fundamental in Bluetooth that makes its perf fall off a cliff when it has more than one peer communicating at the same time.

  2. We need a test to see what happens to bandwidth if Device A has a bluetooth server socket from Device B and C but B is the only one transmitting. Is there is a penalty for having a Bluetooth socket open even if it is not being used?

  3. If Device A has a client socket open to Device B and then Device A tries to open a new client socket to Device C is there any latency penalty in time to create the connection just because it already has an open connection?

  4. Please turn off wifi and discovery. Take two s7 phones and run one test in which phone A exclusively sends data to phone B to measure maximum possible performance. Then run the same test again but this time have phone A and B both sending data to each other and see what speed each side experiences in terms of sending its own data.

vasilevskayaem commented 8 years ago

1) tested on 3 samsungs S7 and on one samsung and two Nexus 6p (in MB/s)

Wi-Fi Discovery samsung to samsung samsung to nexus nexus to nexus nexus to samsung
on on 0.023 0.008 0.006 0.015
on off 0.029 0.011 0.009 0.019
off on 0.024 0.009 0.007 0.016
off off 0.032 0.011 0.010 0.019
vasilevskayaem commented 8 years ago

2) Tested on 3 samsungs.

phone has 2 connections phone has 1 connection
0.123 MB/s 0.179 MB/s
vasilevskayaem commented 8 years ago

3) didn't see any dependancy, for example create connection time in miliseconds (including creation BluetoothClientThread and handshake) when app already have open socket in ms : 703, 937, 1562,180,166,158,158,1143. If app doesn't have any connections I've got next values : 1033, 159,1125,368,483,366,130,267,167,1204.

vasilevskayaem commented 8 years ago

4) I assumed that in test 2 wifi and discovery was on (send 1 Megabyte, buffersize 10 Kilobyte)

send data from one phone send data from both phones
average speed 0.198 MB/s 0.143 MB/s
max speed I've got 0.250 MB/s 0.167 MB/s
vasilevskayaem commented 8 years ago

https://github.com/thaliproject/Thali_CordovaPlugin_BtLibrary/tree/master/NativeTestApp

1) build app from this folder 2) install on two phones 3) on tab "Peers" wait until peers will be found 3) tap on peer and press "two arrows" button (to make connection) 4) tap on send button to send data 5) observe results in log tab or it toast

to test both ways send data

1-4) the same 5) on second phone press "two arrows" button 6) tap on send button on both phones 7) observe results in log tab or it toast

App send data only one way and doesn't reflect it back