Infos über swap

spenser
Posts: 53
Joined: 2002-06-14 08:43
Location: Nüdlingen

Infos über swap

Post by spenser »

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!
Top

standbye
Posts: 146
Joined: 2002-10-16 18:05
Location: daheim :)

Re: Infos über swap

Post by standbye »

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.
Top

User avatar
Joe User
Project Manager
Project Manager
Posts: 11462
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Infos über swap

Post by Joe User »

lsof?
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings 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.
Top

spenser
Posts: 53
Joined: 2002-06-14 08:43
Location: Nüdlingen

Re: Infos über swap

Post by spenser »

Standbye wrote:Du kannst nur sehen wer Memory insgesammt anfordert (top und dann drück mal "m" um es nach memory sortieren zu lassen)

Kann es sein, dass Du "F und dann n" meinst?
Zumindest wäre das bei meinem top die Sortieroption.
Top

spenser
Posts: 53
Joined: 2002-06-14 08:43
Location: Nüdlingen

Re: Infos über swap

Post by spenser »

Joe User wrote:lsof?

Wonach muß ich da genau filtern?
Bei

Code: Select all

lsof |grep swap
kommt nicht viel hilfreiches raus.
Top

User avatar
Joe User
Project Manager
Project Manager
Posts: 11462
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Infos über swap

Post by Joe User »

Code: Select all

man lsof
lsof /dev/swap
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings 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.
Top

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Infos über swap

Post by Roger Wilco »

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.
Top

spenser
Posts: 53
Joined: 2002-06-14 08:43
Location: Nüdlingen

Re: Infos über swap

Post by spenser »

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.

Ich sags mal so:

Code: Select all

~# lsof /dev/swap
lsof: status error on /dev/swap: No such file or directory
lsof 4.78
Top

standbye
Posts: 146
Joined: 2002-10-16 18:05
Location: daheim :)

Re: Infos über swap

Post by standbye »

Spenser wrote:
Standbye wrote:Du kannst nur sehen wer Memory insgesammt anfordert (top und dann drück mal "m" um es nach memory sortieren zu lassen)

Kann es sein, dass Du "F und dann n" meinst?
Zumindest wäre das bei meinem top die Sortieroption.

Drück einfach mal shift + M und lass dich überraschen

@ Joe, das wird nich gehen, der Kernel verwaltet ja den SWAP Userprozesse haben keinen direkten Zugriff
Top

sogo
Posts: 27
Joined: 2007-04-11 11:17
Location: London, UK

Re: Infos über swap

Post by sogo »

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
Top

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Infos über swap

Post by oxygen »

Man kann leicht sehen wieviel Swap ein Prozess benutzt wenn man RSZ (Resident Set Size) und VSZ (Virtual Set Size) vergleicht.
Top

sogo
Posts: 27
Joined: 2007-04-11 11:17
Location: London, UK

Re: Infos über swap

Post by sogo »

oxygen wrote:Man kann leicht sehen wieviel Swap ein Prozess benutzt wenn man RSZ (Resident Set Size) und VSZ (Virtual Set Size) vergleicht.


Nein, das hat mit swap nichts zu tun. RSS/VSS ist - als Daumenregel - der Unterschied von angeforderten Speicher und benutzten Speicher.

-- sogos
Top

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Infos über swap

Post by oxygen »

sogo wrote:Nein, das hat mit swap nichts zu tun. RSS/VSS ist - als Daumenregel - der Unterschied von angeforderten Speicher und benutzten Speicher.
-- sogos

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).

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).


-> RSZ - VSZ = Swap.
Top

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Infos über swap

Post by Roger Wilco »

oxygen wrote:Meine Aussage stimmt. Kannst gerne nachlesen.

Nein, tut sie nicht. ;)

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).

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:
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).

-> RSZ - VSZ = Swap.

Und woraus schließt du, dass virtueller Speicher ausgelagert wird?
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

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. ;)
Top

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Infos über swap

Post by oxygen »

Roger Wilco wrote: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

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. ;)

Virt ist der Speicherverbrauch des Prozess wenn er sich allein im System befände.
Top

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Infos über swap

Post by Roger Wilco »

oxygen wrote:Virt ist der Speicherverbrauch des Prozess wenn er sich allein im System befände.

Das musst du mir jetzt bitte etwas genauer erklären.
Top

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Infos über swap

Post by oxygen »

Roger Wilco wrote:
oxygen wrote:Virt ist der Speicherverbrauch des Prozess wenn er sich allein im System befände.

Das musst du mir jetzt bitte etwas genauer erklären.

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.
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.
Top

sogo
Posts: 27
Joined: 2007-04-11 11:17
Location: London, UK

Re: Infos über swap

Post by sogo »

oxygen wrote:
sogo wrote:Nein, das hat mit swap nichts zu tun. RSS/VSS ist - als Daumenregel - der Unterschied von angeforderten Speicher und benutzten Speicher.
-- sogos

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).

Doch, nennt sich memory over commitment. Beispiel:

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

Das sind stolze 3.1GB (auf x86,deswegen Ende hier...) aber nur 1600 non-swappable Speicher belegt.

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

Aber nur 500MB swapped (war schon vorher).

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]


Das Data Segment an 08489000-b7fa3000 sind unsere ca. 3GB. was noch interessant ist, dass fast alle Segemente swapbar sind.
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...
oxygen wrote:
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).


-> RSZ - VSZ = Swap.


Nein, nein und nein.
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
Top

Who is online

Users browsing this forum: Istella [Bot] and 1709 guests