Masi Masi - 2 months ago 5x
Linux Question

How to Get Free Swap Memory for Matrix Computation in Linux Matlab?

Situation: estimate if you can compute big matrix with your Ram and Swap in Linux Matlab

I need the sum of

, corresponding values by
free -m
under Heading total in Linux

total used free shared buff/cache available
Mem: 7925 3114 3646 308 1164 4220
Swap: 28610 32 28578

Free Ram memory in Matlab by

[r,w] = unix('free | grep Mem');
stats = str2double(regexp(w, '[0-9]*', 'match'));
memsize = stats(1)/1e6;
freeRamMem = (stats(3)+stats(end))/1e6;

Free Swap memory in Matlab: ...

Relation between Memory requirement and Matrix size of Matlab: ...

Testing Suever's 2nd iteration

Suever's command gives me 29.2 GB that is corresponding to
's output so correct

$ free
total used free shared buff/cache available
Mem: 8115460 4445520 1956672 350692 1713268 3024604
Swap: 29297656 33028 29264628

System: Linux Ubuntu 16.04 64 bit

Linux kernel: 4.6

Linux kernel options: wl, zswap

Matlab: 2016a

Hardware: Macbook Air 2013-mid

Ram: 8 GB

Swap: 28 Gb on SSD (set up like in the thread How to Allocate More Space to Swap and Increase its Size Greater than Ram?)

SSD: 128 GB


You can just make a slight modification to the code that you've posted to get the swap amount.

function freeMem = freeMemory(type)
    [r, w] = unix(['free | grep ', type]);
    stats = str2double(regexp(w, '[0-9]*', 'match'));
    memsize = stats(1)/1e6;

    if numel(stats) > 3
        freeMem = (stats(3)+stats(end))/1e6;
        freeMem = stats(3)/1e6;

totalFree = freeMemory('Mem') + freeMemory('Swap')

To figure out how much memory a matrix takes up, use the size of the datatype and multiply by the number of elements as a first approximation.