I am working through resources related to non-abstract large scale system design. I'm working through the google system design exercise in this video.

In the example solution presented, a calculation is made for the number of write requests a write server can pass through to an underlying storage subsystem. Essentially, the write service is receiving 4MB images from users and for each calling the storage system write operation in parallel. We assume that the storage subsystem has inifinite scaling. The write service hardware has a NIC capable of 1GB/s operation. We assume that the server has reasonable CPU and cache/memory to fully saturate the link up and down.

The example video tried to estimate the total number of write operations that a single server can achieve per second.

They state that:

  • it takes 4ms to receive the file from the user (4MB / 1000 MB/s)
  • it takes 4ms to send the file to the storage back end (4MB / 1000 MB/s)
  • Therefore 8ms to 'save' the file.
  • Therefore a single server instance can process 125 writes / second.

But this feel a bit wrong to me. If the server hardware is a standard NIC connected to a standard switch, then the connection is full duplex? Therefore the bandwidth up and down is not shared, and therefore the write operations would be roughly 250 / second?

  • 1
    I smell inaccuracies. First off the nics might just be a red herring, nothing at all to do with the solution. The throughput is capped by the slowest part. Also network bandwidth is usually given in bits: Mb/s, Gb/s. 8 bits make a byte so: 8 * 4 * 1024 * 1024 / 1000000 per second or at most 33.5 files per second once running at full speed. That's also presuming that there isn't anything actually between the two NICs, that might cause a stall, or has a slower processing speed. Also not considering the potential for failed comms that must be retransmitted. – Kain0_0 May 25 '20 at 4:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.