Already a member? Log in

Sign up with your...

or

Sign Up with your email address

Add Tags

Duplicate Tags

Rename Tags

Share This URL With Others!

Save Link

Sign in

Sign Up with your email address

Sign up

By clicking the button, you agree to the Terms & Conditions.

Forgot Password?

Please enter your username below and press the send button.
A password reset link will be sent to you.

If you are unable to access the email address originally associated with your Delicious account, we recommend creating a new account.

Links 1 through 10 of 273 by Ken Robson tagged linux

This document presents my understanding of the implementation and performance issues of software routing. The questions I want to answer include:

How many threads are involved in the networking stack?
How long does a received packet spend in the system without being processed?
How long does a packet to be sent wait before going out on the interface?
Due to easy access to documentation and source, focus is on the the Linux implementation.

We start by tracing the lifeline of a received packet, followed it by the lifeline of a packet to be transmitted and finally combine two to answer the questions above.

The focus is on the networking layer and below. TCP/UDP is not looked at (in particular, the TCP implementation will have some other thread(s) for handling retransmissions etc. We ignore those for the moment).

Share It With Others!

NAPI ("New API") is a modification to the device driver packet processing framework, which is designed to improve the performance of high-speed networking. NAPI works through:

Interrupt mitigation 
High-speed networking can create thousands of interrupts per second, all of which tell the system something it already knew: it has lots of packets to process. NAPI allows drivers to run with (some) interrupts disabled during times of high traffic, with a corresponding decrease in system load.
Packet throttling 
When the system is overwhelmed and must drop packets, it's better if those packets are disposed of before much effort goes into processing them. NAPI-compliant drivers can often cause packets to be dropped in the network adaptor itself, before the kernel sees them at all.
NAPI was first incorporated in the 2.5/2.6 kernel but was also backported to the 2.4.20 kernel.

Share It With Others!

One of the driving forces behind the development of Virtual Memory (VM) was to reduce the programming burden associated with fitting programs into limited memory. A fundamental property of VM is that the CPU references a virtual address that is translated via a combination of software and hardware to a physical address. This allows information only to be paged into memory on demand (demand paging) improving memory utilisation, allows modules to be arbitrary placed in memory for linking at run-time and provides a mechanism for the protection and controlled sharing of data between processes. Use of virtual memory is so pervasive that it has been described as an “one of the engineering triumphs of the computer age” [denning96] but this indirection is not without cost.

Share It With Others!

Finding out why your Linux computer performs the way it does has been a hard task. Sure, there is Oprofile, and even ‘perf’ in recent kernels. There is LatencyTOP to find out where latencies happen.

Share It With Others!

Summary:  Modern operating system kernels provide the means for introspection, the ability to peer dynamically within the kernel to understand its behaviors. These behaviors can indicate problems in the kernel as well as performance bottlenecks. With this knowledge, you can tune or modify the kernel to avoid failure conditions. Discover an open source infrastructure called SystemTap that provides this dynamic introspection for the Linux® kernel.

Share It With Others!

Exmap is a utility which takes a snapshot of how the physical memory and swap space are currently used by all the processes on your system. It examines which page of memory are shared between which processes, so that it can share the cost of the pages fairly when calculating usage totals.

Share It With Others!

As most developers should know by now, the memory statistics given on Linux are mostly meaningless. We have the vmsize, which counts the total address space used by a process. However, this is not accurate because it counts pages that are not mapped in to memory. We also have rss, which measures pages mapped into memory. However, it multi-counts shared pages: every process gets X kb of rss due to libgtk. However, the majority of the pages in libgtk are shared across the processes.

Share It With Others!

Linux® kernel 2.6.25 introduced a new process state for putting processes to sleep called TASK_KILLABLE, which offers an alternative to the efficient but potentially unkillable TASK_UNINTERRUPTIBLE and the easy-to-awaken but safer TASK_INTERRUPTIBLE. TASK_KILLABLE is the outcome of an issue raised in 2002 about the OpenAFS file system driver waiting for an event interruptibly after blocking all signals. This new sleeping state echoes TASK_UNINTERRUPTIBLE with the ability to respond to fatal signals. In this article, the author sheds light on this area and, using examples from 2.6.26 and an earlier version, 2.6.18, discusses the related changes to the Linux kernel and the new APIs that resulted from these changes.

Share It With Others!

The latest survey, which was completed in January 2008, served up some very interesting results and a few surprises. UNIX, the leading Linux distributions from Novell and Red Hat as well as open source Ubuntu were the clear winners in Yankee Group's 2007-

Share It With Others!

We need a new conversation about infrastructure. That's what Linux, the Net, and half a million FOSS (Free and Open Source Software) applications require. Because they're all part of a new infrastructural system that cannot be explained in terms of the ol

Share It With Others!