Memory hierarchy
The instructions and data that the CPU processes are taken from memory. Memory comes in several layers.
Registers - the top layer, it is high speed storage cells (can conatin 32-64 bit data)
Caches - If data can not be found in registers it will be looked in the next level, which is cace
L1 cache the fastes an smallest (usually on CPU chip) 32-256 KB
L2 cache, if the needed data not in L1, CPU is trying to find it in L2, it can be megabytes in size
RAM - If the needed data not in the hardware caches then TLB (Translation Lookaside Buffer) will be checked, after the RAM
TLB - cache of recently accessed addresses
Disk - If the address is not in RAM, then a page fault occurs and the data is retrieved from the hard disk.
A page fault is a request to load a 4KB data page from disk.
The way demand paging works is that the kernel only loads a few pages at a time into real memory. When the CPU is ready for another page, it looks at the RAM. If it cannot find it there, a page fault occurs, and this signals the kernel to bring more pages into RAM from disk.
If the CPU is waiting data from real memory, the CPU is still considered as being in busy state. If data is needed from disk then CPU is in I/O wait state.
Paging Space (also called Swap space)
The RAM and the paging space are divided into 4 KB sections called page frames. (A page is a unit of virtual memory that holds 4 KB of data.) When the system needs more RAM, page frames of information are moved out of RAM and onto the hard disk. This is called paging out. When those page frames of information are needed again, they are taken from the hard disk and moved back into the RAM. This is called paging in.
When the system spends more time shuffling page frames in and out of RAM instead of doing useful work, the system is thrashing.
When the amount of available paging space falls below a threshold, called the paging space warning level, the system sends all the processes (except the kernel processes) a SIGDANGER signal. This signal tells the processes to terminate gracefully. When the amount of empty paging space falls further below a second threshold, called the paging space kill level, the system sends a SIGKILL signal to processes that are using the most paging space. (terminate nongracefully)
When AIX is installed, it automatically creates paging space on the installation disk, which is usually the hard disk hdisk0. The name of this paging space is always hd6. The file /etc/swapspaces contains a list of the paging space areas that will be activated at system startup.
swapon is a term from the days before page frames were used. At that time, around 1982, AIX swapped entire programs out of RAM and onto the hard disk. Today, a portion of the program is left in RAM, and the rest is paged out of the program onto the hard disk. The term swapon stuck, so today, we sometimes refer to paging out and paging in as swapping
Once you page out a computation page, it continues to take up space on the paging file as long as the process exist, even if the page is subsequently paged back in. In general you should avoid paging at all.
How much paging space do you need on your system? What is the rule of thumb?
Database administrators usually like to request the highest number of everything and might instruct you to double the amount of paging space as your RAM (the old rule of thumb). Generally speaking, if my system has greater than 4GB of RAM, I usually like to create a one-to-one ratio of paging space versus RAM. Monitor your system frequently after going live. If you see that you are never really approaching 50 percent of paging space utilization, don't add the space.
The number and types of applications will dictate the amount of paging space needed. Many sizing “rules of thumb” have been published, but the only way to correctly size your machine's paging space is to monitor the amount of paging activity.
Tips for paging space:
- Only 1 paging space per disk
- Use disks with the least activity
- Paging spcaces should the same size
- Do not extend a paging spcae to multiple PV's
Ideally, there should be several paging spaces of equal size each on different physical volumes. The paging space is allocated in a round robin manner and will use all paging areas equally. If you have two paging areas on one disk, then you are no longer spreading the activity across several disks.Because of the round robin technique that is used, if they are not the same size, then the paging space usage will not be balanced.
bootinfo -r displays the real memory in kilobytes (this also works: lsattr -El sys0 -a realmem)
lscfg -vp |grep -p DIMM displays the memory DIMM
lsattr -El sys0 -a realmem (list attributes) see how much real memory you have
ps aux | sort +4 -n lists how much mem is used by the processes
svmon -P | grep -p you can see how much paging spce a process is using
svmon -P -O sortseg=pgsp shows paging space usage of processes
mkps -s 4 -n -a rootvg hdisk0 creates a paging space (give the name automatically:paging00)
-n activates it immediately,
-a it will be activated at next restart as well (adds it to /etc/swapspaces)
-s size 4 lp
lsps -a list all paging spaces and the usage of a paging space
lsps -s summary of all paging spaces combined (all the paging spaces are added together)
chps -s 3 hd6 dynamically increase the size of a paging space with 3 lps
chps -d 1 paging00 dynamically decrease the size of a paging space with 1 lp (it will create a temporary paging space)
/etc/swapspaces contains a list of the paging space areas
vmstat -s
smitty mkps adding paging space
smitty chps changing paging space
swapon /dev/paging02 dynamically activate, or bring online, a paging space (or smitty pgsp)
swapoff /dev/paging03 deactivate a paging space
------------------------------
removing a paging space:
swapoff /dev/paging03 deactivate a paging space (the /dev is needed)
rmps paging03 removes a paging space (the /dev is not needed)
------------------------------
For flushing the paging space:
(it shows high percentage, but actually nothing is using it)
1. chps -d 1 hd6 it will decrease the size of the paging spave by 1 lp (it will create a temp. paging space, copy the conntent...)
(if not enough space in the vg, it will not do that)
2. chps -s 1 hd6 increase paging space to its original size
------------------------------
Fork:
When there is a message regarding cannot fork... it is probably caused by low paging space
When a process calls fork(), the operating system creates a child process of the calling process.
The child process created by fork() is a sort of replica of the calling process. Some server processes, or daemons, call fork() a few times to create more than one instance of themselves. An example of this is a web server that pre-forks so it can handle a certain number of incoming connections without having to fork() the moment they arrive.
The instructions and data that the CPU processes are taken from memory. Memory comes in several layers.
Registers - the top layer, it is high speed storage cells (can conatin 32-64 bit data)
Caches - If data can not be found in registers it will be looked in the next level, which is cace
L1 cache the fastes an smallest (usually on CPU chip) 32-256 KB
L2 cache, if the needed data not in L1, CPU is trying to find it in L2, it can be megabytes in size
RAM - If the needed data not in the hardware caches then TLB (Translation Lookaside Buffer) will be checked, after the RAM
TLB - cache of recently accessed addresses
Disk - If the address is not in RAM, then a page fault occurs and the data is retrieved from the hard disk.
A page fault is a request to load a 4KB data page from disk.
The way demand paging works is that the kernel only loads a few pages at a time into real memory. When the CPU is ready for another page, it looks at the RAM. If it cannot find it there, a page fault occurs, and this signals the kernel to bring more pages into RAM from disk.
If the CPU is waiting data from real memory, the CPU is still considered as being in busy state. If data is needed from disk then CPU is in I/O wait state.
Paging Space (also called Swap space)
The RAM and the paging space are divided into 4 KB sections called page frames. (A page is a unit of virtual memory that holds 4 KB of data.) When the system needs more RAM, page frames of information are moved out of RAM and onto the hard disk. This is called paging out. When those page frames of information are needed again, they are taken from the hard disk and moved back into the RAM. This is called paging in.
When the system spends more time shuffling page frames in and out of RAM instead of doing useful work, the system is thrashing.
When the amount of available paging space falls below a threshold, called the paging space warning level, the system sends all the processes (except the kernel processes) a SIGDANGER signal. This signal tells the processes to terminate gracefully. When the amount of empty paging space falls further below a second threshold, called the paging space kill level, the system sends a SIGKILL signal to processes that are using the most paging space. (terminate nongracefully)
When AIX is installed, it automatically creates paging space on the installation disk, which is usually the hard disk hdisk0. The name of this paging space is always hd6. The file /etc/swapspaces contains a list of the paging space areas that will be activated at system startup.
swapon is a term from the days before page frames were used. At that time, around 1982, AIX swapped entire programs out of RAM and onto the hard disk. Today, a portion of the program is left in RAM, and the rest is paged out of the program onto the hard disk. The term swapon stuck, so today, we sometimes refer to paging out and paging in as swapping
Once you page out a computation page, it continues to take up space on the paging file as long as the process exist, even if the page is subsequently paged back in. In general you should avoid paging at all.
How much paging space do you need on your system? What is the rule of thumb?
Database administrators usually like to request the highest number of everything and might instruct you to double the amount of paging space as your RAM (the old rule of thumb). Generally speaking, if my system has greater than 4GB of RAM, I usually like to create a one-to-one ratio of paging space versus RAM. Monitor your system frequently after going live. If you see that you are never really approaching 50 percent of paging space utilization, don't add the space.
The number and types of applications will dictate the amount of paging space needed. Many sizing “rules of thumb” have been published, but the only way to correctly size your machine's paging space is to monitor the amount of paging activity.
Tips for paging space:
- Only 1 paging space per disk
- Use disks with the least activity
- Paging spcaces should the same size
- Do not extend a paging spcae to multiple PV's
Ideally, there should be several paging spaces of equal size each on different physical volumes. The paging space is allocated in a round robin manner and will use all paging areas equally. If you have two paging areas on one disk, then you are no longer spreading the activity across several disks.Because of the round robin technique that is used, if they are not the same size, then the paging space usage will not be balanced.
bootinfo -r displays the real memory in kilobytes (this also works: lsattr -El sys0 -a realmem)
lscfg -vp |grep -p DIMM displays the memory DIMM
lsattr -El sys0 -a realmem (list attributes) see how much real memory you have
ps aux | sort +4 -n lists how much mem is used by the processes
svmon -P | grep -p
svmon -P -O sortseg=pgsp shows paging space usage of processes
mkps -s 4 -n -a rootvg hdisk0 creates a paging space (give the name automatically:paging00)
-n activates it immediately,
-a it will be activated at next restart as well (adds it to /etc/swapspaces)
-s size 4 lp
lsps -a list all paging spaces and the usage of a paging space
lsps -s summary of all paging spaces combined (all the paging spaces are added together)
chps -s 3 hd6 dynamically increase the size of a paging space with 3 lps
chps -d 1 paging00 dynamically decrease the size of a paging space with 1 lp (it will create a temporary paging space)
/etc/swapspaces contains a list of the paging space areas
vmstat -s
smitty mkps adding paging space
smitty chps changing paging space
swapon /dev/paging02 dynamically activate, or bring online, a paging space (or smitty pgsp)
swapoff /dev/paging03 deactivate a paging space
------------------------------
removing a paging space:
swapoff /dev/paging03 deactivate a paging space (the /dev is needed)
rmps paging03 removes a paging space (the /dev is not needed)
------------------------------
For flushing the paging space:
(it shows high percentage, but actually nothing is using it)
1. chps -d 1 hd6 it will decrease the size of the paging spave by 1 lp (it will create a temp. paging space, copy the conntent...)
(if not enough space in the vg, it will not do that)
2. chps -s 1 hd6 increase paging space to its original size
------------------------------
Fork:
When there is a message regarding cannot fork... it is probably caused by low paging space
When a process calls fork(), the operating system creates a child process of the calling process.
The child process created by fork() is a sort of replica of the calling process. Some server processes, or daemons, call fork() a few times to create more than one instance of themselves. An example of this is a web server that pre-forks so it can handle a certain number of incoming connections without having to fork() the moment they arrive.
No comments:
Post a Comment