Detailed Design of a Many-core System
Understand how to design an efficient many-core key-value store by overcoming memory limitations and locking issues. Learn task allocation strategies for cores and evaluate system performance metrics like latency, throughput, and power consumption to optimize distributed system design.
Now, we will look into the detailed design of the solution to the problems we have while implementing a key-value store on a many-core system. We'll be discussing the solution to these three problems:
Memory limitation of TilePro64
Limitations of a multi-threaded Memcached
Allocation of tasks to cores
Solution: Limitations of memory and Memcached
Our first challenge is that TilePro64 has a 32-bit instruction set, and we cannot assign more than 4GB of virtual address space to a single process. The second challenge identified how the use of global locks hurt the performance of our key-value store. Both problems can be solved by implementing a version of Memcached that supports multiple processes:
Use multiple processes to access the key-value store in their own address space and overcome the memory limitation.
Use
(a direct consequence of using multiple processes) to parallelize data access and stop the use of locks within a shard.data sharding Breaking data into smaller chunks.
Use multiple processes
When using domain-specific processors, we run into unique problems like the TilePro64 having only a 32-bit virtual address space. So, rather than using a single process that uses multiple threads, we will use those threads to communicate with independent processes that contain the key-value data shard in their own dedicated address space. This will allow us to overcome the limitation of the 32-bit virtual address space, and each process will run its operations in serial while ...