How fast can the last receiver receive the data in the second strategy?

mkarun2

New member
Joined
Sep 5, 2016
Messages
1
[FONT=&quot]You own a large gaming company and want to distribute an update to all of your players. The size of the update is 1GB and your server can send data at up to 1GB/s. Your engineers have found that assuming every player can download at 1MB/s leads to very accurate estimates of network performance. Furthermore, they've found you can assume that the server splits its capacity evenly across clients. You have 100,000 players.[/FONT]
[FONT=&quot]One of your engineers recommends that you distribute the update by having all users download the full file from your company's server. You walk through this calculation with the engineer and determine it will take 100,000 seconds (~28 hours) for all of your players to download the update. The server can support 1,000 players downloading the update at once by splitting its 1GB/s across 1,000 1MB/s clients. It will take 100 rounds of 1,000 players for everyone (all 100,000) to receive the update. As it takes 1,000 seconds for a 1MB/s connection to download 1GB, each round will take 1,000 seconds. 100 rounds of 1,000 seconds is 100,000 seconds, or 28 hours.[/FONT]
[FONT=&quot]Another engineer recommends a different, peer-to-peer, strategy. In this strategy, players who have downloaded the patch allow other players to download it from them. So in the first round, 1,000 players download the patch from the server. In the second round, 1,000 new players download the patch from the server, and 1,000 new players pair with the first round downloaders. In the third round, 1,000 new players download the patch from the server, and 3,000 new players download the patch from players who have already downloaded it.[/FONT]
[FONT=&quot]Calculate how long it will take until the last player to receive the update using the second strategy. How much faster is it than the first strategy?

The answer is ~7000 seconds which is 14 times the first strategy. But, I get the answer a 10 times. I would like to understand how it is ~7000?[/FONT]
 
You own a large gaming company and want to distribute an update to all of your players. The size of the update is 1GB and your server can send data at up to 1GB/s. Your engineers have found that assuming every player can download at 1MB/s leads to very accurate estimates of network performance. Furthermore, they've found you can assume that the server splits its capacity evenly across clients. You have 100,000 players.
One of your engineers recommends that you distribute the update by having all users download the full file from your company's server. You walk through this calculation with the engineer and determine it will take 100,000 seconds (~28 hours) for all of your players to download the update. The server can support 1,000 players downloading the update at once by splitting its 1GB/s across 1,000 1MB/s clients. It will take 100 rounds of 1,000 players for everyone (all 100,000) to receive the update. As it takes 1,000 seconds for a 1MB/s connection to download 1GB, each round will take 1,000 seconds. 100 rounds of 1,000 seconds is 100,000 seconds, or 28 hours.
Another engineer recommends a different, peer-to-peer, strategy. In this strategy, players who have downloaded the patch allow other players to download it from them. So in the first round, 1,000 players download the patch from the server. In the second round, 1,000 new players download the patch from the server, and 1,000 new players pair with the first round downloaders. In the third round, 1,000 new players download the patch from the server, and 3,000 new players download the patch from players who have already downloaded it.
Calculate how long it will take until the last player to receive the update using the second strategy. How much faster is it than the first strategy?

The answer is ~7000 seconds which is 14 times the first strategy. But, I get the answer a 10 times. I would like to understand how it is ~7000?
To see what is happening in the 'peer-to-peer' strategy lets build a table. Each row represents a round of downloads and thus takes 1000 seconds. The columns represent (1) the round number, (2) 1K players the server can provide the update to in a round, (3) the number of players who have the update at the beginning of the round and thus can upload to other players, (4) the total number of players in this round who will get the download [the sum of (2) and (3)] this round, (5) the total number of players who have the update at the end of the round [column (3) for the next round]:
Code:
[FONT=courier new]          Server       Begin    Total   End   
                       Player    dl    Player
Round 1:    1K          0K       1K      1K
Round 2:    1K          1K       2K      3K
Round 3:    1K          3K       4K      7K
...[/FONT]
If that's not enough, try highlighting the following
>>>>>
Round 4: 1K 7K 8K 15K
Round 5: 1K 15K 16K 31K
Round 6: 1K 31K 32K 63K
Round 7: 1K 63K 64K 127K

<<<<<
 
Top