Skip to content

zram - Was das??

ROCKPro64
  • Wenn man auf einer minimal Bionic Installation ein

    fdisk -l
    

    macht, bekommt man folgende Ausgabe.

    Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/mmcblk0: 14.7 GiB, 15811477504 bytes, 30881792 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: E55EA076-C740-42B9-A619-20BF1A4DE0E1
    
    Device          Start      End  Sectors  Size Type
    /dev/mmcblk0p1     64     8063     8000  3.9M Linux filesystem
    /dev/mmcblk0p2   8064     8191      128   64K Linux filesystem
    /dev/mmcblk0p3   8192    16383     8192    4M Linux filesystem
    /dev/mmcblk0p4  16384    24575     8192    4M Linux filesystem
    /dev/mmcblk0p5  24576    32767     8192    4M Linux filesystem
    /dev/mmcblk0p6  32768   262143   229376  112M Microsoft basic data
    /dev/mmcblk0p7 262144 30881758 30619615 14.6G Linux filesystem
    
    
    Disk /dev/zram0: 323 MiB, 338702336 bytes, 82691 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/zram1: 323 MiB, 338702336 bytes, 82691 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/zram2: 323 MiB, 338702336 bytes, 82691 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/zram3: 323 MiB, 338702336 bytes, 82691 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/zram4: 323 MiB, 338702336 bytes, 82691 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/zram5: 323 MiB, 338702336 bytes, 82691 sectors
    Units: sectors of 1 * 4096 = 4096 bytes
    Sector size (logical/physical): 4096 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    

    Da stoße ich mal wieder auf was, was ich nicht kenne. zram Ok, schauen wir mal was das ist und was das macht.

    Gerade auf Systemen mit wenig Arbeitsspeicher kommt es hin und wieder vor, dass dieser knapp wird und das System beginnt, den Swap-Speicher zu nutzen. Da sich dieser auf der Festplatte befindet, ist er im Vergleich zum RAM relativ langsam.

    Gut, damit hätten wir das hier geklärt.

    swapon -s 
    

    gibt folgendes aus

    Filename				Type		Size	Used	Priority
    /dev/zram0                             	partition	330760	0	5
    /dev/zram1                             	partition	330760	0	5
    /dev/zram2                             	partition	330760	0	5
    /dev/zram3                             	partition	330760	0	5
    /dev/zram4                             	partition	330760	0	5
    /dev/zram5                             	partition	330760	0	5
    

    Ein

    free
    

    gibt folgendes aus

                  total        used        free      shared  buff/cache   available
    Mem:        3969156       75080     3779900        8512      114176     3855688
    Swap:       1984560           0     1984560
    

    Wenn man die 330760 mit 6 multipliziert, kommt man auf 1984560.

    So wie ich das verstehe, legt diese Installation 1,98 GB RAM als SWAP-Partition im schnelleren RAM ab. Macht ja auch Sinn, bei den lahmen SD-Karten. Anmerkung: Ich habe den ROCKPro64 mit 4 GB RAM.

  • @frankm Ubuntu legt seit Version 13.04 (oder so) per default zram als Swap an (bzw. muß man nur das zram-control Package installieren). Größe ist die Hälfte des verfügbaren RAMs und außerdem werden pro CPU-Core ein zram Block-Device angelegt (braucht's mit halbwegs modernen Kerneln nicht).

    Ich versuch, das schon seit geraumer Zeit in Armbian zu verbessern (zram momentan nur in den Ubuntu-Varianten aktiv) aber das geht alles recht zäh. Ein paar Hintergrundinfos (und Info, wie man das noch optimieren kann) wie so oft bei CNX-Soft: https://www.cnx-software.com/2018/05/14/running-out-of-ram-in-ubuntu-enable-zram/ (in den Kommentaren auch gucken).

  • @tkaiser ; Ich hab dich vermisst 😂

    Danke für die Info, ich bin vor dem ROCKPro64 da noch nie so richtig drüber gestolpert. Aber wenn ich dann was finde, schau auch immer wofür es denn bitte ist.

    Danke für Deine Hinweise.

  • Zwischenfazit April 2019

    Angeheftet ROCKPro64
    1
    +0
    1 Stimmen
    1 Beiträge
    565 Aufrufe
    Niemand hat geantwortet
  • Ayufan Release 0.7.12

    ROCKPro64
    3
    0 Stimmen
    3 Beiträge
    423 Aufrufe
    FrankMF
    Dafür andere Probleme https://pastebin.com/VGGKm1vR Aktuell nicht zu empfehlen!
  • Video PCIe SATA Karte

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    515 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - RP64.GPIO

    Angeheftet Verschoben Hardware
    6
    +0
    0 Stimmen
    6 Beiträge
    6k Aufrufe
    FrankMF
    Hallo zusammen, da ich weiß das dieser Artikel recht beliebt ist, wollen wir den heute mal aktualisieren. Vieles aus den vorherigen Beiträgen passt noch. Es gibt aber kleine Anpassungen. Hardware ROCKPro64v21. 2GB RAM Software Kamils Release 0.10.9 Linux rockpro64 5.6.0-1132-ayufan-g81043e6e109a #ayufan SMP Tue Apr 7 10:07:35 UTC 2020 aarch64 GNU/Linux Installation apt install python Danach laden wir das Projekt git clone https://github.com/Leapo/Rock64-R64.GPIO PIN Nummern anpassen cd Rock64-R64.GPIO/R64 nano _GPIO.py Datei ergänzen # Define GPIO arrays #ROCK_valid_channels = [27, 32, 33, 34, 35, 36, 37, 38, 64, 65, 67, 68, 69, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 96, 97, 98, 100, 101, 102, 103, 104] #BOARD_to_ROCK = [0, 0, 0, 89, 0, 88, 0, 0, 64, 0, 65, 0, 67, 0, 0, 100, 101, 0, 102, 97, 0, 98, 103, 96, 104, 0, 76, 68, 69, 0, 0, 0, 38, 32, 0, 33, 37, 34, 36, 0, 35, 0, 0, 81, 82, 87, 83, 0, 0, 80, 79, 85, 84, 27, 86, 0, 0, 0, 0, 0, 0, 89, 88] #BCM_to_ROCK = [68, 69, 89, 88, 81, 87, 83, 76, 104, 98, 97, 96, 38, 32, 64, 65, 37, 80, 67, 33, 36, 35, 100, 101, 102, 103, 34, 82] ROCK_valid_channels = [52,53,152,54,50,33,48,39,41,43,155,156,125,122,121,148,147,120,36,149,153,42,45,44,124,126,123,127] BOARD_to_ROCK = [0,0,0,52,0,53,0,152,148,0,147,54,120,50,0,33,36,0,149,48,0,39,153,41,42,0,45,43,44,155,0,156,124,125,0,122,126,121,123,0,127] BCM_to_ROCK = [43,44,52,53,152,155,156,45,42,39,48,41,124,125,148,147,124,54,120,122,123,127,33,36,149,153,121,50] Abspeichern. Datei test.py anlegen nano test.py Inhalt #!/usr/bin/env python # Frank Mankel, 2018, LGPLv3 License # Rock 64 GPIO Library for Python # Thanks Allison! Thanks smartdave! import R64.GPIO as GPIO from time import sleep print("Output Test R64.GPIO Module...") # Set Variables var_gpio_out = 156 var_gpio_in = 155 # GPIO Setup GPIO.setwarnings(True) GPIO.setmode(GPIO.ROCK) GPIO.setup(var_gpio_out, GPIO.OUT, initial=GPIO.HIGH) # Set up GPIO as an output, with an initial state of HIGH GPIO.setup(var_gpio_in, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set up GPIO as an input, pullup enabled # Test Output print("") print("Testing GPIO Input/Output:") while True: var_gpio_state_in = GPIO.input(var_gpio_in) var_gpio_state = GPIO.input(var_gpio_out) # Return State of GPIO if var_gpio_state == 0 and var_gpio_state_in == 1: GPIO.output(var_gpio_out,GPIO.HIGH) # Set GPIO to HIGH print("Input State: " + str(var_gpio_state_in)) # Print results print("Output State IF : " + str(var_gpio_state)) # Print results else: GPIO.output(var_gpio_out,GPIO.LOW) # Set GPIO to LOW print("Input State: " + str(var_gpio_state_in)) # Print results print("Output State ELSE: " + str(var_gpio_state)) # Print results sleep(0.5) exit() Beispiel [image: 1537522070243-input_ergebnis.jpg] Wenn der Taster im Bild betätigt wird, soll die LED blinken. Wir benutzen folgende Ein- Augänge des ROCKPro64. # Set Variables var_gpio_out = 156 var_gpio_in = 155 Das heißt: an Pin 1 (3,3V) kommt eine Strippe des Tasters an Pin 29 (Input) kommt eine Strippe des Tasters an Pin 31 (Output) kommt der Plus-Pol der LED an Pin 39 (GND) kommt der Minus-Pol der LED Somit wird auf den Eingang (Pin 29) bei Betätigung des Tasters 3,3 Volt angelegt. Damit wird dann der Eingang als High (1) erkannt. Die LED wird über den Ausgang (Pin 31) gesteuert. Starten kann man das Script mit python test.py https://www.youtube.com/watch?v=aPSC0Q0xInw
  • ROCKPro64 - Reset & Power Taster (extern)

    Hardware
    1
    +0
    0 Stimmen
    1 Beiträge
    675 Aufrufe
    Niemand hat geantwortet
  • Neuer Bootprozeß seit 0.7.x

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    860 Aufrufe
    Niemand hat geantwortet
  • Armbianmonitor

    ROCKPro64
    1
    +0
    0 Stimmen
    1 Beiträge
    1k Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - PCIe x4

    Verschoben Hardware
    13
    +5
    0 Stimmen
    13 Beiträge
    5k Aufrufe
    FrankMF
    @Northstar Hallo, laut meinen Info's nicht, hat irgendwas mit der Speicheradressierung zu tuen. Und Grafikkarten benötigen wohl zu viel. Das ist das, was ich bei den vielen Diskussionen im IRC so aufgeschnappt habe. Ich habe es auch schon mal genauso probiert - natürlich ohne Erfolg.