Infos über swap
-
- Posts: 53
- Joined: 2002-06-14 08:43
- Location: Nüdlingen
Infos über swap
Hi!
Ich habe das Problem, dass ich gerne wissen möchte, welche Prozesse meinen swap nutzen. Ich sehe z.B. in top ja nur, wieviel von dem swap gerade genutzt wird. Ich möchte aber wissen, wer mir den swap im Laufe der Zeit vollschreibt.
Gibts da ein Tool, das mit anzeigt, wer derjenige ist?
Ich arbeite unter Debian.
Danke!
Ich habe das Problem, dass ich gerne wissen möchte, welche Prozesse meinen swap nutzen. Ich sehe z.B. in top ja nur, wieviel von dem swap gerade genutzt wird. Ich möchte aber wissen, wer mir den swap im Laufe der Zeit vollschreibt.
Gibts da ein Tool, das mit anzeigt, wer derjenige ist?
Ich arbeite unter Debian.
Danke!
-
- Posts: 146
- Joined: 2002-10-16 18:05
- Location: daheim :)
Re: Infos über swap
Du kannst nur sehen wer Memory insgesammt anfordert (top und dann drück mal "m" um es nach memory sortieren zu lassen)
ob ein prozess in den swap ausgelagert wird entscheidet der linux kernel.
ob ein prozess in den swap ausgelagert wird entscheidet der linux kernel.
-
- Project Manager
- Posts: 11164
- Joined: 2003-02-27 01:00
- Location: Hamburg
Re: Infos über swap
lsof?
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
-
- Posts: 53
- Joined: 2002-06-14 08:43
- Location: Nüdlingen
Re: Infos über swap
Kann es sein, dass Du "F und dann n" meinst?Standbye wrote:Du kannst nur sehen wer Memory insgesammt anfordert (top und dann drück mal "m" um es nach memory sortieren zu lassen)
Zumindest wäre das bei meinem top die Sortieroption.
-
- Posts: 53
- Joined: 2002-06-14 08:43
- Location: Nüdlingen
Re: Infos über swap
Wonach muß ich da genau filtern?Joe User wrote:lsof?
Bei
Code: Select all
lsof |grep swap
-
- Project Manager
- Posts: 11164
- Joined: 2003-02-27 01:00
- Location: Hamburg
Re: Infos über swap
Code: Select all
man lsof
lsof /dev/swap
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
-
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: Infos über swap
Würde mich ehrlichgesagt überraschen, wenn das klappen würde, Joe. ;)
Die Prozesse fordern ja ganz normal vom Kernel Speicher an und greifen nicht direkt auf die Swap-Partition/-Datei zu.
Die Prozesse fordern ja ganz normal vom Kernel Speicher an und greifen nicht direkt auf die Swap-Partition/-Datei zu.
-
- Posts: 53
- Joined: 2002-06-14 08:43
- Location: Nüdlingen
Re: Infos über swap
Ich sags mal so:Roger Wilco wrote:Würde mich ehrlichgesagt überraschen, wenn das klappen würde, Joe. ;)
Die Prozesse fordern ja ganz normal vom Kernel Speicher an und greifen nicht direkt auf die Swap-Partition/-Datei zu.
Code: Select all
~# lsof /dev/swap
lsof: status error on /dev/swap: No such file or directory
lsof 4.78
-
- Posts: 146
- Joined: 2002-10-16 18:05
- Location: daheim :)
Re: Infos über swap
Drück einfach mal shift + M und lass dich überraschenSpenser wrote:Kann es sein, dass Du "F und dann n" meinst?Standbye wrote:Du kannst nur sehen wer Memory insgesammt anfordert (top und dann drück mal "m" um es nach memory sortieren zu lassen)
Zumindest wäre das bei meinem top die Sortieroption.
@ Joe, das wird nich gehen, der Kernel verwaltet ja den SWAP Userprozesse haben keinen direkten Zugriff
-
- Posts: 27
- Joined: 2007-04-11 11:17
- Location: London, UK
Re: Infos über swap
es gibt keine direkte Zuordnung von Prozessen und Swap. Der Kernel sieht nur (Speicher-)Seiten und entscheidet, ob diese ausgelagert werden sollen oder nicht. Viele Seiten sind nur einmal im Speicher vorhanden,werden aber von mehreren Prozessen benutzt (bspw. libc ;-) ) und umgekehrt (shared memory ist zum Beispiel Teil von keine Prozess).
-- sogos
-- sogos
-
- Posts: 2138
- Joined: 2002-12-15 00:10
- Location: Bergheim
Re: Infos über swap
Man kann leicht sehen wieviel Swap ein Prozess benutzt wenn man RSZ (Resident Set Size) und VSZ (Virtual Set Size) vergleicht.
-
- Posts: 27
- Joined: 2007-04-11 11:17
- Location: London, UK
Re: Infos über swap
Nein, das hat mit swap nichts zu tun. RSS/VSS ist - als Daumenregel - der Unterschied von angeforderten Speicher und benutzten Speicher.oxygen wrote:Man kann leicht sehen wieviel Swap ein Prozess benutzt wenn man RSZ (Resident Set Size) und VSZ (Virtual Set Size) vergleicht.
-- sogos
-
- Posts: 2138
- Joined: 2002-12-15 00:10
- Location: Bergheim
Re: Infos über swap
Meine Aussage stimmt. Kannst gerne nachlesen. Einen unterschied zwischen angefordertem Speicher und benutztem Speicher gibt es nicht. Soviel wie Prozess fodert bekommt er auch (oder stürzt mit einem malloc ab).sogo wrote: Nein, das hat mit swap nichts zu tun. RSS/VSS ist - als Daumenregel - der Unterschied von angeforderten Speicher und benutzten Speicher.
-- sogos
-> RSZ - VSZ = Swap.man ps wrote:rss, the non-swapped physical memory that a
task has used (in kiloBytes). (alias rssize, rsz).
vsz, the amount of (virtual) memory that the process is using in KiB
(1024-byte units). (alias vsize).
-
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: Infos über swap
Nein, tut sie nicht. ;)oxygen wrote:Meine Aussage stimmt. Kannst gerne nachlesen.
Ich kann sehr viel mehr Speicher anfordern, als das System physikalischen Speicher (+Swap) besitzt. Nutzen kann ich aber eben nur so viel, wie physikalisch vorhanden ist.oxygen wrote:Einen unterschied zwischen angefordertem Speicher und benutztem Speicher gibt es nicht. Soviel wie Prozess fodert bekommt er auch (oder stürzt mit einem malloc ab).
Und woraus schließt du, dass virtueller Speicher ausgelagert wird?oxygen wrote:-> RSZ - VSZ = Swap.man ps wrote:rss, the non-swapped physical memory that a
task has used (in kiloBytes). (alias rssize, rsz).
vsz, the amount of (virtual) memory that the process is using in KiB
(1024-byte units). (alias vsize).
Allgemein würde ich dir die Texte im Verzeichnis Documentation/vm des Kernel Quelltexts empfehlen.
Kleines Beispiel (Ausgabe von top auf meinem Desktop):
Code: Select all
Mem: 2062092k total, 1908432k used, 153660k free, 52k buffers
Swap: 979924k total, 220k used, 979704k free, 780888k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10352 #### 20 0 922m 432m 25m S 1 21.5 1:23.84 java
3462 #### 20 0 712m 163m 26m S 0 8.1 1:56.97 thunderbird-bin
3449 #### 20 0 265m 154m 18m S 1 7.7 26:55.92 firefox-bin
-
- Posts: 2138
- Joined: 2002-12-15 00:10
- Location: Bergheim
Re: Infos über swap
Virt ist der Speicherverbrauch des Prozess wenn er sich allein im System befände.Roger Wilco wrote: Kleines Beispiel (Ausgabe von top auf meinem Desktop):Demnach müsste der Java-Prozess knapp 500 MB auf die Swap-Partition auslagern. Diese wird aber praktisch nicht verwendet. Zusammen mit dem Thunderbird Prozess müssten rund 1,2 GB Swap genutzt werden. Es gibt aber nur 1 GB. ;)Code: Select all
Mem: 2062092k total, 1908432k used, 153660k free, 52k buffers Swap: 979924k total, 220k used, 979704k free, 780888k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10352 #### 20 0 922m 432m 25m S 1 21.5 1:23.84 java 3462 #### 20 0 712m 163m 26m S 0 8.1 1:56.97 thunderbird-bin 3449 #### 20 0 265m 154m 18m S 1 7.7 26:55.92 firefox-bin
-
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: Infos über swap
Das musst du mir jetzt bitte etwas genauer erklären.oxygen wrote:Virt ist der Speicherverbrauch des Prozess wenn er sich allein im System befände.
-
- Posts: 2138
- Joined: 2002-12-15 00:10
- Location: Bergheim
Re: Infos über swap
Der Wert enthält alle shared libaries die der Prozess benutzt. z.B. auch die libc. Diese befindet aber natürlich nur 1x im Speicher und nicht für jeden Prozess extra.Roger Wilco wrote:Das musst du mir jetzt bitte etwas genauer erklären.oxygen wrote:Virt ist der Speicherverbrauch des Prozess wenn er sich allein im System befände.
EDIT: Zugegebenermaßen bringt das eine Ungenauigkeit in die Rechnung. Allerdings wird die Ungenauigkeit mit zunehmender Prozessgröße kleiner. Im Desktopbereich wird die Rechnung auf Grund von riesen libaries wie GTK oder QT schwierig. Aber auf dem Server kann man die Faustregel durchgehen lassen.
-
- Posts: 27
- Joined: 2007-04-11 11:17
- Location: London, UK
Re: Infos über swap
Doch, nennt sich memory over commitment. Beispiel:oxygen wrote:Meine Aussage stimmt. Kannst gerne nachlesen. Einen unterschied zwischen angefordertem Speicher und benutztem Speicher gibt es nicht. Soviel wie Prozess fodert bekommt er auch (oder stürzt mit einem malloc ab).sogo wrote: Nein, das hat mit swap nichts zu tun. RSS/VSS ist - als Daumenregel - der Unterschied von angeforderten Speicher und benutzten Speicher.
-- sogos
Code: Select all
> cat allyoucaneat.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
#define MEGAB 1024*1024
int i;
int *ret;
do
{
ret=malloc(10*MEGAB);
printf("allocated %d MBn",10*MEGAB/1024/1024);
usleep(200);
} while (ret);
printf("ate enough...n");
sleep(1000);
return(0);
}
Code: Select all
[... viele]
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
allocated 10 MB
ate enough...
Code: Select all
ps auxxww | grep allyou
xxxx 11325 0.0 0.0 3116804 1600 pts/3 S+ 16:28 0:00 ./allyoucaneat
Code: Select all
>free
total used free shared buffers cached
Mem: 2073240 1933892 139348 0 33600 359628
-/+ buffers/cache: 1540664 532576
Swap: 2031608 571180 1460428
Schauen wir uns mal den Speicher an:
Code: Select all
> cat /proc/11325/maps
00110000-00111000 r-xp 00110000 00:00 0 [vdso]
00922000-0093d000 r-xp 00000000 fd:00 13205515 /lib/ld-2.7.so
0093d000-0093e000 r-xp 0001a000 fd:00 13205515 /lib/ld-2.7.so
0093e000-0093f000 rwxp 0001b000 fd:00 13205515 /lib/ld-2.7.so
00945000-00a98000 r-xp 00000000 fd:00 13205517 /lib/libc-2.7.so
00a98000-00a9a000 r-xp 00153000 fd:00 13205517 /lib/libc-2.7.so
00a9a000-00a9b000 rwxp 00155000 fd:00 13205517 /lib/libc-2.7.so
00a9b000-00a9e000 rwxp 00a9b000 00:00 0
0123d000-08048000 rwxp 0123d000 00:00 0
08048000-08049000 r-xp 00000000 fd:00 8824045 /home/xxxxxx/allyoucaneat
08049000-0804a000 rw-p 00000000 fd:00 8824045 /home/xxxxxx/allyoucaneat
08300000-08321000 rw-p 08300000 00:00 0
08321000-08400000 ---p 08321000 00:00 0
08489000-b7fa3000 rw-p 08489000 00:00 0
b7fc4000-bf7d2000 rw-p b7fc4000 00:00 0
bf866000-bf87b000 rw-p bffea000 00:00 0 [stack]
Nicht swapbar ist (natuerlich) der vdso (obwohl zaehlt nicht mit), sowie die executable, der Rest kann ohne Probleme auf die Platte ausgelagert werden.
Interessant waere, wenn ich ein mlock() auf den malloc-ed Speicher machen wuerde...
Nein, nein und nein.oxygen wrote:-> RSZ - VSZ = Swap.man ps wrote:rss, the non-swapped physical memory that a
task has used (in kiloBytes). (alias rssize, rsz).
vsz, the amount of (virtual) memory that the process is using in KiB
(1024-byte units). (alias vsize).
VSZ (oder VSS) ist die Groesse *innerhalb* der VM. RSZ(RSS) ist die Groesse, die im RAM bleiben muss. Beide Groesse haben nichts zu tun mit der Menge an Speicher die der Prozess einnimmt. Eine solche Groesse gibt es nicht. Ich koennte das Beispiel nach belieben veraendern (was passiert, wenn ich eine 3 GB grosse Datei mmap-e ? ;-) und was passiert, wenn die Maschine under mem-pressure dann geraet..) und wir wuerden immer etwas anderes sehen. Die ganze Region als shared-mem deklariert und es wuerde garnicht in ps auftauchen.
Merke: Speicher ist relativ, der Kernel ist sehr intelligent Speicher effizient zu verwalten.
Die Angaben in ps sind *niemals* genaue Angaben, da in dem Moment, wo sie ausgegeben werden schon geaendert sein koennen.
Zurueck zu dem og. Beispiel: eventuell sind einige Seiten auf dem Swap ausgelagert worden. Wenn Du genau wissen willst, welche Seiten das sind, kannst Du oprofile oder systemtap nehmen, allerdings muss Du schon wissen wonach Du suchst.
http://www.informit.com/content/images/ ... n_book.pdf ist ein guter Einstieg dies anhand von Linux zu verstehen.
-- sogos