|
|
|
|
|
|
|
|
The Linux Kernel
Linux is the kernel source code that is delivered by Linus via kernel.org.
Being the kernel, it controls the operating of the system, but it is *not* the
Operating System (OS). In fact, the kernel does not even know about the OS;
it has a limited set of kernel functions that it (and only it) can run, and it
has an API that we mortals think of as the "System Calls." A few of the
details are provided in these notes; the rest can be obtained as Linus suggests:
reading the source code. ;)
The x86 CPU and System Calls
Linux Kernel Objects
CPU Scheduling, Part 1
CPU Scheduling, Part 2
CPU Affinity
IO Scheduling
IRQ Assignment
Linux Kernel Hacking
Kernel Panic
|
|
|
The Operating System
An Operating System (OS) is typically delivered by a vendor and then customized
further by the customer. A Linux-based OS contains a Linux kernel,
some vendor-specific utilities, a bunch of "stuff" from Open Source Software (OSS)
developers (such as GNU), and maybe even some propriatary packages as well.
What a change from 20 years ago !!
While not as powerful as the kernel, by a twist of fate it is the OS that
*drives* the kernel and puts it to work. Thus, it is hard to describe the
functionality of the OS without bringing in specifics of the kernel. Because
of that, and because much of the free world refers to a Linux-based OS as
"Linux", we shall do the same despite what was discussed above. ;)
Process Priorities
Return (Exit) Codes
|
|
|
System Tuning
It is said that System Tuning is not a science but an art; I think of it as a bit of both.
Tuning Overview - System
Tuning Cheat Sheet
Establishing the Baseline
SAR, Part 1
SAR, Part 2
IOstat
MPstat
VMstat
|
|
|
Application Tuning
A good coder not only knows the language, but also knows the OS they are writing for. Once
the application is functional and maintainable, now is the time to make it faster. These
notes contain the lessons learned from the experts:
Tuning Overview - Applications
Low Latency Optimizations
Application Profiling
|
|
|
I/O & File Systems
Real memory is still not unlimited. Until the time comes when that is not true,
applications still need to rely upon other forms of *slower* media for storage.
As storage is such a well known bottleneck, you're probably thinking that there
must be billions (trillions?) spent trying to minimize the I/O latency; and you'd
be right:
Linux Storage & File Systems
Filesystem - Inodes
Filesystem - Permissions
Tuning Selected File Systems
High Performance (Parallel) File Systems
|
|
|
Networking
Much as Linux is made of chained, efficient programs, Networking
consists of chained, efficient protocols that allow data to be sent
and received. Among the many protocols, Internet Protocol version 4
(IPv4) is certainly the most prevalent as a carrier for the higher level
Unix Network Services.
Network Congestion
TCP Dump
Ethereal
ARP Cache
Packet Routing
Spanning Tree
Ethernet/IPv4/TCP/UDP - OSI Model
Although Linux is best known for being a server, it's ability to be both a Desktop
client and also a Router are well respected. With regard to the latter, its trivial
to enable routing on Linux ( "echo 1 > /proc/sys/ipv4/ip_forward" ), but not so
when determining which packets to route and which to filter. The current method is
to use "iptables." The Netfilter project contains most everything you should need to know
on the topic. Netfilter builds upon the earlier "ipmasq" and "ipchains" work in using "iptables."
Need *real* router functionality, like running BGP, OSPF or RIP? Linux has it, and has had it
for years in Quagga (formerly Zebra). Yep, Linux makes a pretty good "basic" router.
Sample NAT firewall using iptables
There are a number of high speed protocols that run over Fiber, with Fibre Channel
being the most prevalent in the Linux community. Fiber Channel is able to carry
other protocols, most notably the SCSI suite of protocols. Of course, with GigE, Ten GigE
and potentially 40 and 100 GigE, you will certinly hear more about Fibre over Ethernet.
But while some look at how to improve Fibre Channel, Ethernet and even TCP (iWARP),
others have changed the playing field with Infiniband. Whether it's RDMA, iSER, or
just plain old IPoIB, it seems pretty clear that there's another gorilla in the house.
HPC Interconnects
Infiniband
Fibre Channel
SAS
SCSI
|
|
|
Network Services
It's great to have a Network, but it's reason for existing is to provide access to something. That's
where setting up Network Services comes in. Services (like DNS, HTTP, SMTP) may be accessable by the whole
Internet, or they may be available to a select set of subnets.
DHCP
DNS
HTTP
NFS
SMTP
EZ qmail (Local || SourceForge)
Sendmail
XDMCP
|
|
|
|
|
|
|
|
|
Now well into my second career, the first being Exercise Science (see:
http://brettlee.com/prof/),
I have once again found that the amount of information necessary to be
successful in the field is more that the mind of a mere mortal can retain.
Thus, my notes in this field began.
This site contains some of the notes from the many deep dives I have done on
selected topics in this area. In many cases, it has several dives, each one
deeper than the last. Since the subject of diving is at hand, it now seems
appropriate to plug yet another one of my websites,
http://scubanavigator.com.
The notes here are yours to use. They are far from being completely
accurate, however, they are my on-going attempt at understanding this complex
field.
Should you wish to report any errors or suggestions, please use the
contact link below. I would appreciate it.
If you find these materials of use, please consider making a small donation
to the ASPCA.
Brett Lee, President
Everything Penguin
Finally, one last plug: For data encryption and passphrase protection,
try Professional Data Security (see:
http://crypto.brettlee.com).
**** Contact Page for Brett Lee****
|
|
|
|
|
|
|
"We left all that stuff out. If there's an error, we have this
routine called panic, and when it is called, the machine crashes,
and you holler down the hall, 'Hey, reboot it.'"
- Dennis Ritchie
|
|
|
|
|
|
|
|
|
|
|
|
|
|