Название: Mastering Linux System Administration
Автор: Richard Blum
Издательство: John Wiley & Sons Limited
Жанр: Зарубежная компьютерная литература
isbn: 9781119794462
isbn:
FIGURE 1.2 The Linux system memory map
The memory locations are grouped into blocks called pages. The kernel locates each page of memory either in the physical memory or in the swap space. The kernel then maintains a table of the memory pages that indicates which pages are in physical memory and which pages are swapped out to disk.
The kernel keeps track of which memory pages are in use and automatically copies memory pages that have not been accessed for a period of time to the swap space area (called swapping out), even if there's other memory available. When a program wants to access a memory page that has been swapped out, the kernel must make room for it in physical memory by swapping out a different memory page and swapping in the required page from the swap space. Obviously, this process takes time and can slow down a running process. The process of swapping out memory pages for running applications continues for as long as the Linux system is running.
LOOKING AT MEMORY
There are a couple of simple commands you can use to get an idea of just how your Linux system is managing memory. While we'll be exploring these commands in more detail later in the book, here's a quick exercise for you to get started exploring your Linux system:
1 Log into your Linux system. (If you don't have a Linux system available yet, you can come back to here after going through either Chapter 2, “Installing an Ubuntu Server,” or Chapter 4, “Installing a Red Hat Server.”)
2 From the command prompt, enter the command free. You should see something similar to this output:$ free total used free shared buff/cache available Mem: 2035504 135668 1449568 1048 450268 1742704 Swap: 2097148 0 2097148The output from the free command shows the total amount of physical memory installed on the system, as well as the amount of swap space currently configured.
3 The free command just provides an overview of the memory for your Linux system. For a more detailed look, enter the command cat /proc/meminfo. You should see a long listing, similar to this:$ cat /proc/meminfo MemTotal: 2035504 kB MemFree: 1449632 kB MemAvailable: 1742352 kB Buffers: 25452 kB Cached: 386028 kB SwapCached: 0 kB Active: 166036 kB Inactive: 290704 kB Active(anon): 51796 kB Inactive(anon): 128 kB Active(file): 114240 kB Inactive(file): 290576 kB Unevictable: 18640 kB Mlocked: 18640 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB Dirty: 156 kB Writeback: 0 kB AnonPages: 63940 kB Mapped: 63344 kB Shmem: 1048 kB KReclaimable: 38664 kB Slab: 74316 kB SReclaimable: 38664 kB SUnreclaim: 35652 kB KernelStack: 2044 kB PageTables: 1268 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 3114900 kB Committed_AS: 376812 kB VmallocTotal: 34359738367 kB VmallocUsed: 27676 kB VmallocChunk: 0 kB Percpu: 516 kB HardwareCorrupted: 0 kB AnonHugePages: 0 kB ShmemHugePages: 0 kB ShmemPmdMapped: 0 kB FileHugePages: 0 kB FilePmdMapped: 0 kB CmaTotal: 0 kB CmaFree: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB Hugetlb: 0 kB DirectMap4k: 90048 kB DirectMap2M: 2007040 kB $The kernel continually updates the meminfo file to show exactly what's going on in memory at that moment in time, so the file constantly changes.
SOFTWARE PROGRAM MANAGEMENT
The Linux operating system calls a running program a process. A process can run in the foreground, displaying output on a display, or it can run in background, behind the scenes. The kernel controls how the Linux system manages all the processes running on the system.
The kernel creates the first process, called the init process, to start all other processes on the system. When the kernel starts, it loads the init process into virtual memory. As the kernel starts each additional process, it gives it a unique area in virtual memory to store the data and code that the process uses.
There are a few different types of init process implementations available in Linux, but these days, the two most popular are as follows:
SysVinit—The SysVinit (SysV) initialization method was the original method used by Linux and was based on the Unix System V initialization method. Though it is not used by many Linux distributions these days, you still may find it around in older Linux distributions.
Systemd—The systemd initialization method was created in 2010 and has become the most popular initialization and process management system used by Linux distributions.
The SysVinit initialization method used a concept called runlevels to determine what processes to start. The runlevel defines the state of the running Linux system and what processes should run in each state. Table 1.1 shows the different runlevels associated with the SysVinit initialization method.
TABLE 1.1: The SysVinit Runlevels
RUNLEVEL | DESCRIPTION |
0 | Shuts down the system |
1 | Single‐user mode used for system maintenance |
2 | Multiuser mode without networking services enabled |
3 | Multiuser mode with networking services enabled |
4 | Custom |
5 | Multiuser mode with GUI available |
6 | Reboots the system |
The /etc/inittab
file defines the default runlevel for a system. The processes that start for specific runlevels are defined in subdirectories of the /etc/rc.d
directory. You can view the current runlevel at any time using the runlevel
command, as shown here:
$ runlevel N 5 $
The systemd initialization method became popular because it has the ability to start processes based on different events such as these:
When the system boots
When a particular hardware device is connected
When a service is started
When a network connection is established
When a timer has expired
The systemd method determines what processes to run by linking events to unit files. Each unit file defines the programs to СКАЧАТЬ