On April 28-29 I'll be giving master class (in Russian) about development of high performance server applications in UNIX/Linux environment. The main topic of the class will be methods and technologies to build HTTP-, Instant Messaging-, database and other servers, which processes hundreds of thousands requests per second and gigabits of incoming traffic on commodity hardware. Mostly I'll be concentrating on following topics:
- the server architecture (threads, processes, queues and IO);
- concurrency (synchronization, context switches);
- fast data structures and properties of classic data structures from performance point of view;
- data alignment and optimization of CPU caches usage;
- lock-free data structures, atomic operations and memory barriers;
- memory allocators (when you need to develop your own allocator, types of memory allocators)
- internal server caches (data structures, replacement policies);
- zero-copy for disk and network IO and how to reduce copying in your code;
- CPU-binding for interrupts and threads/processes;
- working with huge files (mmap(), O_DIRECT, blocks allocation);
- how Linus works with files (page cache, disk synchronization, IO scheduling);
- profiling;
- and finally, when do you need to move to kernel.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.