Unixism: Of consoles and blinking cursors
-
Linux Pressure Stall Information (PSI) by Example
[Discuss this article and read other’s comments on the subject on this thread on Hacker News.] The three fundamental building blocks of computers, CPU, I/O and RAM can come under pressure due to contention and this is not uncommon. To both accurately size workloads and to increase hardware utilization, having information on how much pressure…
-
A Manager’s Guide to Kubernetes Adoption
Discussion on Hacker News This article and its topic were the subject of fairly detailed discussion on this thread here on Hacker News. Perusing through the comments should be well worth your time, albeit you might emerge completely confused by the experience. And no–tech guys do not hate each other, we just have a wide-ranging…
-
Linux Applications Performance: Part VII: epoll Servers
This chapter is part of a series of articles on Linux application performance. If you came here without reading the poll()-based implementation description All the explanation of how exactly we move from a process or thread-based model to an event based model is there in the poll()-based article. Without going through it, this article might…
-
Linux Applications Performance: Part IV: Threaded Servers
This chapter is part of a series of articles on Linux application performance. Threads were all the rage in the 90s. They allowed the cool guys to give jaw-dropping demos to their friends and colleagues. Like so many cool things from the 90s, today, it is yet another tool in the arsenal for any programmer.…
-
Linux Applications Performance: Part V: Pre-threaded Servers
This chapter is part of a series of articles on Linux application performance. The design discussed in this article is more popularly known as “thread pool”. Essentially, there is a pre-created pool of threads that are ready to serve any incoming requests. This is comparable to the pre-forked server design. Whereas there was a process…
-
Linux Applications Performance: Part VI: Polling Servers
This chapter is part of a series of articles on Linux application performance. When things happen sequentially, we get them. All our flowcharts, algorithms or workflows are sequential in nature. It’s easy for our brains to understand sequential happenings. Moving to a multi-process or a threaded model is also a simple extension of that model.…
-
Linux Applications Performance: Part III: Preforked Servers
This chapter is part of a series of articles on Linux application performance. While the iterative server has trouble serving clients in parallel, the forking server incurs a lot of overhead forking a child process every time a client request is received. We saw from the performance numbers that in our test setup, it has…
-
Linux Applications Performance: Part II: Forking Servers
This chapter is part of a series of articles on Linux application performance. In Part I: Iterative servers, we took a look at a server which deals with one client request at a time. This server called accept() whenever it was done serving one client so that it could accept more client connections and process…
-
Linux Applications Performance: Part I: Iterative Servers
This chapter is part of a series of articles on Linux application performance. The iterative network server is one of the earliest programs you might have written if you ever took a course or read a book on network programming. These type of servers are not very useful except for learning network programming or in…
-
Linux Applications Performance: Introduction
Articles in this series Part I. Iterative Servers Part II. Forking Servers Part III. Pre-forking Servers Part IV. Threaded Servers Part V. Pre-threaded Servers Part VI: poll-based server Part VII: epoll-based server On HackerNews There are several interesting takeaways from the HackerNews thread for this article series. Do check it out. Web apps are the…