Amazon Silk: Assisted Web Browsing (Sort Of)
Amazon Silk refers to the Fire's browser and its underlying technology. The idea behind Silk is to offload some processing onto Amazon's EC2 cloud, decreasing the time it takes to render a webpage on a comparatively slow mobile device and reducing overall power consumption. In theory, this should help extend battery life. And while this sounds awesome on paper, it's perhaps not a real benefit when put to actual use.
The problem is in its execution. To begin, Silk doesn't use the cloud to accelerate every webpage. Second, even when it uses the cloud, Silk dynamically determines what parts of the browser subsystems (for instance, networking, HTML, page rendering) to accelerate.
This graph was generated from a debugging script that polled CPU usage on the Kindle Fire. It illustrates the performance difference between processing a webpage locally and using Amazon's cloud.
The CPU workload is evenly distributed during a local test, as the browser requests data and processes it in real-time. When you enable cloud acceleration, the Fire idles for a short period while it waits on the EC2 servers to collect webpage data.
However, in order to counterbalance the time spent idle, Amazon's servers uses the SPDY compression protocol from Google to send information back. This is partly why cloud acceleration should be faster. After receiving the data, though, the Fire still needs to take what it received and generate the page itself. The thing is, what gets compressed must then be decompressed. And that's why CPU usage spikes.
The benefits of cloud acceleration aren't necessarily evident when you look at CPU usage alone; the time it takes to receive data, decompress it, and render differs from one page to another. Generally, cloud acceleration is enabled when there are a lot of HTML elements, seen on sites like cnn.com and our stories. When it does occur, the speed-up isn't really that dramatic.
Overall, power consumption tends to be a wash when you compare a local job to cloud-based acceleration.
It's also possible that I'm not requesting data from a site with a slow connection to my ISP. In that case, the rendering speed could be faster in the cloud, since Amazon has some of the fastest data pipes in the world.
As with most Web browsers, Silk maintains a local cache of data. Amazon doesn't specify how much space it sets aside, but as you browse more sites, Silk clears old data to make sure space is available. With cloud acceleration enabled, Amazon is supposed to prefetch certain linked webpages. However, requesting a linked page not stored in cache turns out to be faster when cloud acceleration is disabled. See Appendix B for instructions on how to disable cloud acceleration.