Äntligen ett script för Swap och Cache!!

Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
Kategoriregler
Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Äntligen ett script för Swap och Cache!!

Inlägg av Osprey »

Under julhelgen har jag skrivit ihop ett litet script som hjälper till att få Linux så effektivt som möjligt...

På måndag kommer jag att släppa det på LinkedIn, där jag har ganska mycket kontakter hyfsat högt upp på företagen och då hoppas jag på att få lite spridning på det så att det kan göra nytta för alla Linuxanvändare. Och givetvis så släpper jag det här lite innan det... :)

Ursprunget är att jag har länge tyckt att det är ganska märkligt att det inte finns något bra verktyg för att hålla koll på och administrera Swap och Cache i Linux. Det har i princip inte funnits någonting alls för detta, förutom möjligheten att på vinst och förlust ändra parametrarna. Scriptet har funktioner för både inställning och återställning, testning och en massa annat. I början av scriptet finns dokumentationen som man kan läsa antingen direkt i källkoden eller också genom att ange "--help" när man kör det.

Självfallet har man störst nytta av ett sådant här script/program på en dator med relativt litet minne (i förhållande till det man kör i den). Det är där som det finns mest att vinna, eftersom på en dator med gott om minne så funkar det ju även om man inte utnyttjar det effektivt. Men även om man inte ändrar något, så kan det vara kul att se hur det är inställt och hur det fungerar.

Prova det gärna på era system och kom med synpunkter och idéer om det är något ni tycker är fel, eller om det är något som inte funkar. Scriptet är i dagsläget testat och fungerar felfritt för Ubuntu 14.10 Utopic Unicorn, Kubuntu 14.10, Lubuntu 14.10, Linux Mint 17.1 Rebecca, openSUSE 13.2, CentOS 7.0, Fedora 21 och ElementaryOS, mer än så har jag inte hunnit med...

Kod: Markera allt

#! /bin/bash
#
# This script is written by:  Magnus Ewert
# ------------------------------------------------------------------------
# -- This program is free software: you can redistribute it and/or modify
# -- it under the terms of the GNU General Public License as published by
# -- the Free Software Foundation, either version 3 of the License, or
# -- (at your option) any later version.
# -- 
# -- This program is distributed in the hope that it will be useful,
# -- but WITHOUT ANY WARRANTY; without even the implied warranty of
# -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# -- GNU General Public License for more details.
# -- 
# -- You should have received a copy of the GNU General Public License
# -- along with this program.  If not, see <http://www.gnu.org/licenses/>.
# ------------------------------------------------------------------------
#set -u		# Used for easy debugging
#
#=========================
#=========================
#  ADJUSTABLE VARIABLES
#=========================
#=========================
#
# --Miscellaneous values
DEFAULT_SWAPPINESS=60		# Most common value - change if your system differs
DEFAULT_CACHE_PRESSURE=100	# Most common value - change if your system differs
#
# --Default steps for "test"
DEFAULT_STEPS_SWAP="10,60,90"
DEFAULT_STEPS_CACHE="50,100,10000"
#
# --Memory sizes		# These memory sizes can be changed if needed, just change first digit...
let MEM_MINI=1*1024*1024	#  1 GiB - A "mini" memory is less or equal 1 GiB
let MEM_SMALL=2*1024*1024	#  2 GiB - A "small" memory is less or equal 2 GiB (but greater than 1 GiB)
let MEM_MEDIUM=4*1024*1024	#  4 GiB - A "medium" memory is less or equal 4 GiB (but greater then 2 GiB)
let MEM_LARGE=8*1024*1024	#  8 GiB - A "large" memory is less or equal 8 GiB (but grater than 4 GiB)
let MEM_MAXI=16*1024*1024	# 16 GiB - A "maxi" memory is less or equal 16 GiB (but grater than 8 GiB)
#				# An even bigger memory is referred in the script, but not categorized...
let MINI=0			# enumeration of memory sizes...
let SMALL=1			# enumeration of memory sizes...
let MEDIUM=2			# enumeration of memory sizes...
let LARGE=3			# enumeration of memory sizes...
let MAXI=4			# enumeration of memory sizes...

let EMERGENCY_SWAP_GBYTES=1	# Size of emergency swap that the script can create
# --CPU Sampling Down Factor
CPU_SAMPLING_DOWN_FACTOR=10	# Factor to use to prevent too fast CPU slow down
#
#===============================================================================================================
# DON'T TOUCH BELOW, UNLESS YOU KNOW WHAT YOU ARE DOING!
#===============================================================================================================
#
CMD=$(basename $0)
let RAM=$(free -m | grep "Mem:" | awk '{ print $2 }')
# -Not that the system seldom or never reports sizes as 512, 1024 etc. due to the base-2 and base-10 difference.
# -For example 1 MB = 10**6 bytes, while 1 MiB = 2**20 bytes. However the comparison below becomes right anyway
# -because the steps between possible memory sizes.
if [[ $RAM -le 512 ]]; then
	# Actually a 512 MB system normally shows 495
	RAMSIZE="mini"
elif [[ $RAM -le 1024 ]]; then
	RAMSIZE="small"; 
elif [[ $RAM -le 4096 ]]; then
	RAMSIZE="medium"
elif [[ $RAM -le 8192 ]]; then
	RAMSIZE="large"
else
	RAMSIZE="maxi"
fi
#
EXIT=false
if [[ -z $(which sponge 2> /dev/null) ]]; then
	if [[ ! -z $(which apt-get 2> /dev/null) ]]; then
		echo -n "_Moreutils is not installed, do you want to install it? [Y/n]: "
		read IN
		if [[ -z $IN || $IN == "y" || $IN == "Y" ]]; then
			apt-get install moreutils >> /dev/null 2>&1
		else
			exit
		fi
	else
		#EXIT=true
		SPONGE=false
		#echo ' "moreutils" must be installed'
	fi
else
	SPONGE=true
fi
if [[ -z $(which gawk 2> /dev/null) ]]; then
	if [[ ! -z $(which apt-get 2> /dev/null) ]]; then
		echo -n "_GNU awk is not installed, do you want to install it? [Y/n]: "
		read IN
		if [[ -z $IN || $IN == "y" || $IN == "Y" ]]; then
			apt-get install gawk >> /dev/null 2>&1
		fi
	else
		EXIT=true
		echo ' "gawk" must be installed'
	fi
fi
if [[ $EXIT == true ]]; then
	exit
fi
#
function usage {
CMD=$(basename $0)
cat << EOD
  $CMD {clear|help|set|show|temp|test|trim} {cache|swap} -p|--perm -s values|--steps=values -a|--advise

	$CMD helps you to manage the system swapping and pageing.

	clear 	- Clears the swap or the cache

		  Format:	$CMD clear {swap | cache}

		  This may be used for test purposes or to clear the cache after some kind of 
		  heavy load. It may increase performance greatly in case the swap or cache is 
		  filled with junk that is no longer needed.

		  It may take quite a time to complete and to be possible to run it, there must 
		  be enough memory available, otherwise an error is issued.

		  Example:

		  	$CMD clear cache
		  	$CMD clear swap


	help 	- Show this

		  Format:	$CMD {-h | --help}

		  Example:

		  	$CMD --help

	set  	- Set parameters for Swappiness or Cache pressure

		  Format:	$CMD set {swap | cache} value [-p | --perm]

		  Swapping means that inactive processes are swapped out from system memory (RAM)
		  to a swapfile. The swapfile acts as an extension to the RAM and in that way the
		  system can work with a larger memory than the physical RAM. On the other hand
		  the access to the processes and data that is in the swapfile is a lot slower and
		  costs a lot more resources to access, so regarding performance it would be much
		  better to keep all processes in memory.

		  The cache is a large area in the physical memory (RAM) that is used to store 
		  filesystem data and other frequently accessed data items. For example inodes 
		  which is used to access files are stored there. By storing data in the cache, the
		  access to it becomes a lot faster than reading it from disk every time. To see
		  some of the data in the cache, the "slabtop -s c" command may be used.

		  When the system has lots of physical memory, there is no problem and both the 
		  processes (related to swap) and the data (related to cache) can use all space it
		  needs. But when the memory is limited there becomes a concurrent situation between
		  the processes and the cache. How to trim the system for best performance depends 
		  a lot on how the system is used, a server has a quite different needs than a 
		  desktop and a system with a small memory must be treated totally different than
		  one with a large.

		  swap - the "swappiness"
		         Normally the Swappiness is set to 60, which means that the system does not
			 start swapping until there is only 60% of the RAM left for other things.
			 For a desktop it is normally better with a lower value, which makes the
			 processes more resident. For a server on the other hand, it mostly gives
			 a better throughput by increasing the value to give more room for the cache.

			 Basically it is so that less swappiness gives faster response due to that
			 the process is already in memory (and not outswapped), but on a system
			 with a small physical memory it may be necessary even to increase the
			 swappiness only to get enough room for the system to live.
		
                  cache - the "cache pressure"
			 The Cache Pressure is set to 100 which is default. This implies the kernel 
			 will attempt to reclaim dentries and inodes at a “fair” rate with respect
			 to pagecache and swapcache reclaim. A lower value implies that the system 
			 will keep more filesystem cache and a higher value means it will try to
			 reclaim the space. Generally the "100" means 100%, which shall be considered
			 as the normal situation where the system tries to reclaim space from the
			 cache and a lower level means that the system will let more of the cache
			 exist.

			 Generally it gives better performance with a larger cache, but if the memory
			 is limited and the system has to choose between processes (swappiness) and
			 cache, it -may- be better to reduce the cache, at least for a desktop.

		  dirty - set dirty_ratio
		  dirtybg - set dirty_background_ratio
		         These options are to be considered quite as "undocumented features", they can
			 be used to change dirty_ratio and dirty_background_ratio for experimental 
			 purposes. For exmaple it is possible to test with RedHat's and Suse's default
			 values on a Ubuntu system and vice versa. The "default" option does not work
			 for these parameters, as what as is default varies between different systems.

		  Generally it can be seen like that the processes (swapping) and the cache competes
		  about the memory. This is a very important rule to have in mind, although this
		  is only true as long as the memory is limited.

		  One special situation that may occur for a system with large memory, is that the
		  system swaps processes out even when there is plenty of room. The setting of
		  swappiness is static in that way that when the memory reaches the limit, the
		  swapping starts, even if there is still a lot of free memory. Let us say that
		  the swappiness is set to the default 60, then if the processes needs 45% of the 
		  memory and the cache needs 50%, the processes will be swapped out down to 40% 
		  although there actually already was 5% free memory.

		  Example:

		  	$CMD set swap 10 --perm		# Set swap to 10 permanently
			$CMD set cache 100		# Set cache pressure to 100 until next boot
			$CMD set swap default		# Set swap to default value ($DEFAULT_SWAPPINESS)

		  The value is either a numeric value or the term "default".

		  Note! the recommendations here are general, in real life they may differ on any 
		  subjective system due to the specific type of load that exists.


	show 	- Show status about swapping and pageing

		  Format:	$CMD show {swap | cache | all} {-a | --advise}

		  If the command $CMD is issued without any parameters or options, then the "show all"
		  function is executed.

		  Example:
				$CMD			# Same as "$CMD show all"
				$CMD show all
				$CMD show all --advise	# Same as "$CMD -a"
				$CMD show cache
		  		$CMD show swap

		  When showing information about the memory, the script also tries to also come with some
		  good recommendations about how to increase performance and make the system faster. But 
		  although the script really tries, it can never consider all your systems specific 
		  characteristics and loads. You shall use the recommendations as a kind of rules of 
		  thumb and then add your own knowledge and a lot of testing!!

		  If the -a or --advise switch is used, the script tries to give some advises about how
		  to trim the system, accordingly to the amount of physical memory etc. This shall however
		  only be seen as an advise, as there is no analysis of the specific load on the system or
		  what programs and applications that are executed. So read the advises, add your own
		  knowledge and make up your mind about what as will be useful to try.


	temp 	- Create a temporary swap of $EMERGENCY_SWAP_GBYTES GiB

		  Format:	$CMD temp swap

		  This is basically an emergency command, to be used if the swap is full and the
		  computer possibly will hang without any chance for an important work to complete.
		  The added size is fixed to $EMERGENCY_SWAP_GBYTES which is defined in the head of
		  this script, but however the command may be issued more than once to create
		  a larger temporary swap space.

		  Example:

		  		$CMD temp swap

		  The swap is created in /tmp, so it will be automatically deleted in the next boot.
                  Although the size is fixed in the header of this script, it is possible to issue the
		  command more than once to create more space.


	test 	- Test performance for different values on Swappiness and Cache pressure.

		  Tests the time it takes to perform certain tasks. The values for Swappiness and
		  Cache pressure are altered to make it possible to see how that affects performance.

		  Format:	$CMD test {swap | cache | all} {-s values | --steps=values} {-x file | --script=file}

		  Defult steps for cache is $DEFAULT_STEPS_CACHE and default steps for swap is $DEFAULT_STEPS_SWAP
		  Options:

		  	cache		$CMD test cache --steps=$DEFAULT_STEPS_CACHE --script=foo.bar
		  	swap		$CMD test swap --steps=$DEFAULT_STEPS_SWAP
			all		$CMD test all --steps=$DEFAULT_STEPS_CACHE:$DEFAULT_STEPS_SWAP

		  See the "set" option for more information about "swap" and "cache".

		  The steps paramater is the specific values to test for cache_pressure or swappiness. If
		  no values for steps are specified, the default values from the header of this script is
		  used. Values are specified by three comma separated numbers and when testing all the
		  specification for cache_pressure and swappiness are separated by a colon.

		  Normally the test shall continue to iterate around the best of the three values, in order
		  to finally find the optimal value. So if the steps in the first test are 10, 60 and 90
		  and 10 yields the best result, the next iteration could specify 5, 10 and 15 or 5, 10 and
		  20 etc.

		  If there is a lot of other activities in your system, you will probably have to run a lot
		  of tests before you get a clera picture of which setting as is the best.

		  It is also important to note that the values may influence each other. If you first run a
		  test of swappiness with the values "a,b,c" and the value "a" turns out to be best, and then
		  you run a test of cache pressure with the values of "d,e,f" and "e" turns out to be best.
	    	  Then the value of "e" may not at all be the best when you have changed the swappiness to
		  "a". The same is of course also valid in the other direction, so if you run test of the
		  swappiness first, and then you change swappiness to "a" before testing cache pressure, to
		  be sure that the test obtains the best possible value. Then it is not at all necessary that
		  "a" is still the best value for swappiness when you have changed the value fpr cache pressure.

		  The "all" test performs a cross-examination of all values to find out which combination
		  that gives the best performance. However it is important to remember that this is a
		  quite complex test. Normally you also have to run it more than once to get a good
		  approximation of the best value.

		  It is possible to specify an own script to be used in the test, but by default the
		  script below is used:

		  	#! /bin/bash
		  	if [[ -x /sbin/sysctl ]]; then
		  	   CACHE=\$(/sbin/sysctl vm.vfs_cache_pressure | awk "{ print \$3 }")
		  	else
		  	   CACHE=\$(cat /proc/sys/vm/vfs_cache_pressure)
		  	fi
		  	if [[ -x /sbin/sysctl ]]; then
		  	   SWAPPINESS=\$(/sbin/sysctl vm.swappiness | awk "{ print \$3 }")
		  	else
		  	   SWAPPINESS=\$(cat /proc/sys/vm/swappiness)
		  	fi
		  	echo "Cache pressure is set to $CACHE"
		  	echo "Swappiness is set to $SWAPPINESS"
		  	TESTFILE1=\$(mktemp)
		  	TESTFILE2=\$(mktemp)
		  	echo "-Step #1"
		  	sync
		  	echo 3 > /proc/sys/vm/drop_caches
		  	dd if=/dev/zero of=\$TESTFILE1 count=1 bs=900M
		  	echo "-Step #2"
		  	find / > /dev/null 2>&1
		  	echo "-Step #3"
		  	cp \$TESTFILE1 \$TESTFILE2
		  	echo -n "-Step #4"
		  	time find / > /dev/null 2>&1
		  	echo "-Step #5"
		  	rm -f \$TESTFILE1 \$TESTFILE2
		  	exit

		  This script tests both the swappiness and the cache pressure quite hard, but however it
		  is not necessarily representative for your specific load, so sometimes it might be better
		  to test with an own script.

		  If you are using an own script is is important to think of that to get a correct picture,
		  it has to be att quite heavy script that takes a considerable time to complete, otherwise
		  the result may depend too much on the current other activities in the system. The script
		  must also generate a type of load that is so similar as possible to the normal load in the
		  system, otherwise you will test the system for something completely different.

		  It may take quite some time to execute this command, generally the standard script takes
		  about 10 minutes for the test of cache or swap and about 1.5 hours for the cross-examination
		  of all.


	trim	- This command is quite unscientific and it is based mostly on "network rumors". The meaning of
		  this is that a sufficiently secure source has said that -"this will give better performance",
		  but there are no direct evidence for this.

		  Format:	$CMD {arch | backup | cpu | desktop | mini | reset | restore | router}

		  Options:

		  	arch		Trim accordingly to recommendations for Arch (this may work well for
					other dists too).

			backup		Trim accordingly to net-rumors for backup-servers or other servers with
					heavy data transfers.

			cpu		Trim cpu by reducing the risk that it decreases CPU-frequency too fast.

			desktop		Standard trim for normal desktop usage. Generally based on net-rumors
					and own ideas. My own experience is that this works VERY well.

			desktop2	A kind of preemptive setting for desktops with small memory. This mode
					causes the system to let the cache grow, while inactive processes are
					swapped out. Try this mode and compare it to "desktop" if you have a
					small memory.

			mini		Trim system for a desktop with minimal memory.

			reset		Reset changed parameters to their previous value. Note that this must 
			restore		be done once for each changing and before anything else is changed. 
					If two "trim-functions" are done after each other, the second will 
					overwrite the stored values from the first.

			router		Same as backup.

		  If more than one adjustment is to be tested, the reset must be done between every one of them
		  to work. Otherwise the second test will overwrite the initial data from the first so that 
		  there is nothing left of the original values.

		  Yet there is no general setting for "server", because there is a big difference between 
		  servers depending on what kind of work they perform.


	zram	- Check or change dynamic zram (compcache).

		  Format:	$CMD zram {-e | --edit}

		  Options:

		  	If used without any options, the current size and state of zram is shown. A check
			is also done to see if zram is installed and if it is not, a question is issued
			about whether to install it.

		  	-e, --edit	Edit setup for zram. This is normally not necsessary as
					the system automatically set up zram for best practice.

			Note! that the edit-switch is not useful for all implementations. Some systems
			has zram integrated into the kernel and there really is no parameters to edit.


	If used without any option, the command shows info about current swap and cache (ie. "$CMD show all").


  Author

	Written by Magnus Ewert


  Tested and works well under:

  	Ubuntu 14.10 Utopic Unicorn, Kubuntu 14.10, Lubuntu 14.10, Linux Mint 17.1 Rebecca,
	openSUSE 13.2, CentOS 7.0, Fedora 21, ElementaryOS

EOD
}
Det gick inte att lägga in scriptet i sin helhet här, eftersom det överskrider maxgränsen, men det finns att ladda ner komplett här -> http://www.enargo.com/it/swap/vmi

Ha det gott och lycka till... :D
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Äntligen ett script för Swap och Cache!!

Inlägg av Osprey »

En liten detalj i scriptet är fixad, ni som redan har hämtat det kan ladda hem det igen, så ska allting funka... ;)
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Äntligen ett script för Swap och Cache!!

Inlägg av andol »

Osprey skrev:En liten detalj i scriptet är fixad, ni som redan har hämtat det kan ladda hem det igen, så ska allting funka... ;)
Publicear på GitHub, Bitbucket eller så? Varpå det blir lättare för folk att se när det gjorts ändringar, etc.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Äntligen ett script för Swap och Cache!!

Inlägg av Osprey »

Så småningom kanske det hamnar där, jag vill se om det finns tillräckligt intresse för det först...

Fast det borde finnas intresse tycker jag, själv har jag fått upp prestanda ganska ordentligt på ett antal datorer genom att få en bättre översikt över inställningarna. Det blir betydligt lättare att anpassa inställningarna efter den last man har...

Men steg #2 sedan skulle ju isåfall bli att jag skriver ihop något (i Bash eller "C") som mäter och samlar statistik över hur systemet arbetar och utnyttjas... men det kanske kommer... ;)
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Äntligen ett script för Swap och Cache!!

Inlägg av Osprey »

Jag kanske borde tillägga också att om man kör scriptet med "--help" så får man reda på lite mer om vad man kan göra. Det som då visas är det som står överst i källkoden och som man också kan se där. Det finns lite alla möjliga funktioner inbyggda i scriptet, men om man bara kör de rakt av utan parametrar, så visar det hur alla de nuvarande inställningarna ser ut (egentligen kör man "vmi show all" då). Det finns lite allt möjligt man kan göra med scriptet, men allt detta finns som sagt var beskrivet i källkoden och man ser det med "vmi --help"...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
johanre
Serveradmin
Inlägg: 3888
Blev medlem: 22 okt 2006, 09:13
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Malmö

Re: Äntligen ett script för Swap och Cache!!

Inlägg av johanre »

Påminnelse till mig själv; testa ospreys briljanta skript lite mer och återkom med kommentar. Bl.a. var det något enstaka fel i engelskan, men inget allvarligt. Lysande, osprey!
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Äntligen ett script för Swap och Cache!!

Inlägg av Osprey »

Tackar, tackar!! :)

Jag har lite funderingar om ett tillägg till scriptet som gör det möjligt att utgå från lite mer dynamisk statistik. Men vi får se hur det blir med det, det hänger mycket på hur mycket tid jag har att lägga på det...

För övrigt är det rätt intressant att köra scriptet med "test" och se vilken skillnad man får beroende på inställningar. Ibland kan det bli ganska ordentlig skillnad...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Tjadden
Inlägg: 1606
Blev medlem: 12 sep 2010, 01:37
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

Re: Äntligen ett script för Swap och Cache!!

Inlägg av Tjadden »

Osprey.

Får jag fråga två saker varför behöver man använda Swap med tanke på hur stora hårddiskarna är idag?
Men om så tvunget har jag 2000 Mb till Swap, det räcker väl och blir över, jag som inte sysslar med några källkoder, mer än de som finns i färdig programvara?
Alltså ditt script är inte till för amatörer som jag?
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Äntligen ett script för Swap och Cache!!

Inlägg av Osprey »

Tjadden skrev:Får jag fråga två saker varför behöver man använda Swap med tanke på hur stora hårddiskarna är idag?
Det finns inget som helst samband mellan swap och storleken på hårddisken, men skulle man hårddra det hela så borde man isåfall snarare (kosta på sig att) ha större swap ju större hårddisk man har.

Swap-utrymmet har sin koppling till datorna RAM-minne, det vill säga den del av minnet som finns tillgängligt för processer och operativsystem. Den funktionen som swap har, är att när eller om det börjar bli fullt i detta minne, så städar datorn ut inaktiva processer och lägger dem i swap-utrymmet. Den använder alltså swap-utrymmet som en form av utökat RAM-minne.

På så sätt så kan datorn alltså agera som om den hade mycket större minne än vad den egentligen har, på bekostnad av att det tar lite extra tid att få igång de processerna som ligger ute i swap igen.

Dagens RAM-minnen ligger ofta på t.ex 4 GiB, 8 GiB eller 16 GiB och detta kan ju tyckas vara mycket. Men dels utökas hela tiden funktionerna i olika program så att de använder mer och mer minne och dessutom så startar vi användare upp mer och mer samtidigt - bara för att det går. Så det här minnet går väldigt ofta åt ändå. Själv har jag 8 GiB på den burken jag sitter vid och det är inte alls ovanligt att det blir såpass fullt så att systemet börjar använda swap.
Tjadden skrev:Men om så tvunget har jag 2000 Mb till Swap, det räcker väl och blir över, jag som inte sysslar med några källkoder, mer än de som finns i färdig programvara?
Jag tycker att 2000 Mb låter ganska litet och "källkoder" (systemutveckling/programmering?) i sig, kräver inte mycket minne. Det som normalt sett kräver mycket minne är Spel, Audio, Video, Bildbehandling och andra resurskrävande saker som ligger ganska långt ifrån det rent datortekniska om man säger så.

Om man ser till hur stor swap-fil som RedHat rekommenderar så säger de:[code]Amount of RAM in the system Recommended swap space Recommended swap space if allowing for hibernation
--------------------------- ---------------------- ------------------------------------------------
⩽ 2GB 2 times the amount of RAM 3 times the amount of RAM
> 2GB – 8GB Equal to the amount of RAM 2 times the amount of RAM
> 8GB – 64GB 0.5 times the amount of RAM 1.5 times the amount of RAM
> 64GB 4GB of swap space No extra space needed[/code]
RedHat bör ju liksom veta vad de talar om och det är först när man har mer än 64 GiB RAM-minne som de säger att man inte behöver någon swap och även de vet att storleken på hårddisken inte har med det att göra.

Det är ganska så ofta man hör folk säga att "jag har så stort minne så jag behöver ingen swap"... och då tänker man bara liksom att -"men hallå!! det där är ju ungefär som att säga att -jag har så stor toalett så jag behöver inte kunna spola!"... Även om man nu har så stort minne (helst över 64 GiB) så att man (skenbarligen) aldrig behöver spola/ha någon swap, så är ju swap-utrymmet ändå en försäkring ifall det skulle behövas. Det kostar ju ändå i princip ingenting att ha en swap-fil på t.ex 8 GiB. Det finns ingen som helst anledning att snåla på swap-utrymmet, bara för att "någon" har sagt att det inte behövs...
Tjadden skrev:Alltså ditt script är inte till för amatörer som jag?
Scriptet är till för alla. De som är verkligt insatta i det här vet exakt var i minnet de ska skruva ändå utan scriptet, medan de som inte kan så mycket kan göra det här utan att behöva kunna så mycket...

Så man kan väl se det ungefär som att de som redan vet vad det handlar om, kan använda scriptet för att det förenklar hanteringen och de som inte vet så mycket om det, kan använda det för att kunna få datorn så effektiv som möjligt, utan att behöva lära sig en massa tekniskt...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Tjadden
Inlägg: 1606
Blev medlem: 12 sep 2010, 01:37
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

Re: Äntligen ett script för Swap och Cache!!

Inlägg av Tjadden »

Osprey.

Stort tack för god information.
Då vet jag vag behöver göra, öka storleken på swap, jag som har endast 4GB i Ram-minne.
Har nog tyckt ibland att datorn segar lite grann när jag sysslar med konstruktionsritningar, där jag har ibland upp till 10 sidor med delar och detaljer och därtill ett tekniskt uppslagsverk till hjälp ute på nätet.
Intressant med Scriptet som du har gjort ett utomordentligt arbete med och att det är en klar förbättring i Ubuntu.
Användarvisningsbild
plemil
Inlägg: 62
Blev medlem: 11 jul 2013, 08:53
OS: Debian
Ort: Värnamo

Re: Äntligen ett script för Swap och Cache!!

Inlägg av plemil »

Lääänge sedan jag var inloggad. Har dock varit inne och läst i tid och otid.

Har lite frågor angående detta skript som jag känner att jag skulle kunna ha nytta av, med tanke på min maskin. Jag sitter på en Sony Vaio VGN-A397XP utrustad enligt nedan:
CPU: Intel(R) Pentium(R) M processor 2.00GHz
RAM: 1,48GiB
Swap: 1,28GiB
På denna så kör jag just nu CrunchBang 11 waldorf
och kör jag: $ uname -a
så svarar det: Linux crunchbang 3.2.0-4-686-pae #1 SMP Debian 3.2.63-2 i686 GNU/Linux

Jag har gjort skriptet körbart med: $ chmod u+x vmi.txt
men när jag kör scriptet så måste jag skriva: $ ./vmi.txt
Är det så det ska vara?

När jag försöker köra en swaptest enlig --help: $ sudo ./vmi.txt test swap --steps=10,60,90
blir responsen: vmi.txt: option '--steps' doesn't allow an argument, plus all hjälptext.

Om jag kör: $ sudo ./vmi.txt test swap --steps
så går processorn upp på 100% men jag ser aldrig något resultat. Startade igår vid 22:15 och i morse vid 07:30 så gick processorn fortfarande på 100% och Terminalen var exakt likadan som när jag lämnade den i går kväll. Så då dödade jag terminalfönstret.
Är det något jag missar?

MVH/ Plemil aka Per
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Äntligen ett script för Swap och Cache!!

Inlägg av Osprey »

plemil skrev:Jag har gjort skriptet körbart med: $ chmod u+x vmi.txt
men när jag kör scriptet så måste jag skriva: $ ./vmi.txt
Är det så det ska vara?
Det är så bara för att den mapp du står i inte finns med i din $PATH. Du måste alltså explicit tala om att den ska köra något som ligger just där...
plemil skrev:När jag försöker köra en swaptest enlig --help: $ sudo ./vmi.txt test swap --steps=10,60,90
blir responsen: vmi.txt: option '--steps' doesn't allow an argument, plus all hjälptext.
Åtgärdat nu...
plemil skrev:Om jag kör: $ sudo ./vmi.txt test swap --steps
så går processorn upp på 100% men jag ser aldrig något resultat. Startade igår vid 22:15 och i morse vid 07:30 så gick processorn fortfarande på 100% och Terminalen var exakt likadan som när jag lämnade den i går kväll. Så då dödade jag terminalfönstret.
Är det något jag missar?
Prova med den versionen som ligger ute på nätet nu, jag ändrade lite i kommandotolkningen... :)
Du ska kunna se utskrifter hela tiden om vad den håller på med...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
plemil
Inlägg: 62
Blev medlem: 11 jul 2013, 08:53
OS: Debian
Ort: Värnamo

Re: Äntligen ett script för Swap och Cache!!

Inlägg av plemil »

Tack för svar och hjälp.
Då ska jag prova i kväll igen så får jag rapportera tillbaks om mina resultat.
Om inte annat så kan du addera Crunchbang 11 till din lista :-)
Tack så länge/ Per
Användarvisningsbild
plemil
Inlägg: 62
Blev medlem: 11 jul 2013, 08:53
OS: Debian
Ort: Värnamo

Re: Äntligen ett script för Swap och Cache!!

Inlägg av plemil »

Nu har jag provat lite med ditt uppdaterade script.
Trim får jag forsätta att prova lite olika inställningar med, det känns som en väg frammåt.
Däremot så har jag fortfarande problem med "test". Kör jag $ sudo ./vmi.txt test swap --steps=10,60,90
så får jag nu detta svaret (men utskriften funkar iaf :-) ):

====== Executing performance test - SWAPPINESS - [seq 1] ======
./vmi.txt: line 1482: /usr/bin/time: No such file or directory
Total used CPU time 0 sec

====== Executing performance test - SWAPPINESS - [seq 2] ======
./vmi.txt: line 1482: /usr/bin/time: No such file or directory
Total used CPU time 0 sec

====== Executing performance test - SWAPPINESS - [seq 3] ======
./vmi.txt: line 1482: /usr/bin/time: No such file or directory
Total used CPU time 0 sec

Best CPU-time: 0 sec with Swappiness: 10
Best Real/Elapsed time: with Swappiness: sec10

time-kommandot brukar jag använda i terminalen lite då och då, men det kanske är en annan "time"?
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Äntligen ett script för Swap och Cache!!

Inlägg av Osprey »

Konstigt....

Det verkar som om "time" ligger någon annanstans i Crunchbang då... prova med att köra "which time"...

Jag ska se om jag kan komma ihåg varför jag kör med "/usr/bin/time" istället för bara "time", när nu ändå "/usr/bin" brukar finnas med i $PATH. Något skäl finns det ju till att jag specade hela path:en för kommandot, men just denna bit är det nog ett par år sedan jag skrev, så jag får fundera lite...

[EDIT] Nu börjar det dyka upp ett minne av att anledningen är att det finns två olika "time" och om man inte anger "/usr/bin/time" så används en mer primitiv "time" som saknar tillvalet "-f" eller "--output"....

Kolla om "-f" och "--output" finns med i ditt system om du provar med "man time"...

[EDIT igen] Nu tror jag att jag hittade det, i Synaptic finns en alternativ GNU-version av "time" där det står "GNU-versionen kan formatera utdata på godtyckligt sätt genom en formatsträng i printf-stil som innehåller olika resursmätningar" och det är just det jag använder mig av.

Den borde finnas tillgänglig i Crunchbang också så om du provar att installera den...

[EDIT en gång till] Nu hittade jag hela sanningen och den är det att om man kör bara "time" så körs en liten enkel och primitiv variant som finns inbyggd i bash, men här behövs alltså GNU-verionen...

Jag ska lägga in en kontroll av detta i början av scriptet.... :)

[EDIT i gryningen] Nu finns en ny version av scriptet som testar att GNU time är installerat...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
plemil
Inlägg: 62
Blev medlem: 11 jul 2013, 08:53
OS: Debian
Ort: Värnamo

Re: Äntligen ett script för Swap och Cache!!

Inlägg av plemil »

Här kunde jag börjat testa tidigt ser jag :-)
Hoppas jag inte har sabbat hela din dag...

Men "GNU-time" gjorde susen. Fungerade att installera via scriptet också. Jag kom nämligen på att "moreutils" & "gawk" var jag tvungen att installera själv med apt-get osv. Av någon anledning så funkade det inte via scriptet.

Nu så ska jag bara köra lite tester och se om jag blir klokare om hur jag skulle kunna köra effektivare.

/p
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Äntligen ett script för Swap och Cache!!

Inlägg av Osprey »

plemil skrev:Jag kom nämligen på att "moreutils" & "gawk" var jag tvungen att installera själv med apt-get osv. Av någon anledning så funkade det inte via scriptet.
Vad skrev scriptet ut om "moreutils" och "gawk" då? Fick du frågan om ifall du ville installera eller hoppade den helt över det??
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
plemil
Inlägg: 62
Blev medlem: 11 jul 2013, 08:53
OS: Debian
Ort: Värnamo

Re: Äntligen ett script för Swap och Cache!!

Inlägg av plemil »

Frågan fick jag och besvarade med Y, men av någon anledning så installerades inget av dem. Men jag kommer inte ihåg vad responsen blev...

Skulle kunna avinstallera och prova igen. Skulle det vara till någon hjälp?
/p
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Äntligen ett script för Swap och Cache!!

Inlägg av Osprey »

plemil skrev:Frågan fick jag och besvarade med Y, men av någon anledning så installerades inget av dem. Men jag kommer inte ihåg vad responsen blev...

Skulle kunna avinstallera och prova igen. Skulle det vara till någon hjälp?
/p
Det enda jag skulle kunna tänka mig då är om du kört scriptet utan sudo och alltså inte haft rättighet att installera. Många av funktionerna i scriptet måste ju köras som root, men det har jag faktiskt missat att lägga in en kontroll av...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
plemil
Inlägg: 62
Blev medlem: 11 jul 2013, 08:53
OS: Debian
Ort: Värnamo

Re: Äntligen ett script för Swap och Cache!!

Inlägg av plemil »

Ja mycket möjligt. "GNU-time" gick in klockrent och kodraderna är snarlika så det är förmodligen inget problem.
När jag körde manuellt så var det definitivt med sudo, och efter det så har det gått bra.
/p
Skriv svar

Återgå till "Experimentverkstad"