如何在 Linux Matlab 中获得用于矩阵计算的空闲交换内存?

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

情况:估计你是否可以在 Linux Matlab
中使用 Ram 和 Swap 计算大矩阵 我需要 MemSwap 的总和,在 Linux

totalfree -m 对应的值
              total        used        free      shared  buff/cache   available
Mem:           7925        3114        3646         308        1164        4220
Swap:         28610          32       28578

在 Matlab 中释放 Ram 内存
% 
[r,w] = unix('free | grep Mem');
stats = str2double(regexp(w, '[0-9]*', 'match'));
memsize = stats(1)/1e6;
freeRamMem = (stats(3)+stats(end))/1e6;

Matlab 中的可用交换内存:...

内存要求与 Matlab 矩阵大小之间的关系:...

测试 Suever 的第二次迭代

Suever 的命令给了我 29.2 GB,这与 free 的输出相对应

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

系统:Linux Ubuntu 16.04 64 位
Linux内核:4.6
Linux 内核选项:wl、zswap
Matlab: 2016a
硬件:Macbook Air 2013 年中期
内存:8 GB
交换:SSD 上 28 Gb(设置与线程 How to Allocate More Space to Swap and Increase its Size Greater than Ram? 相同)
固态硬盘:128 GB

您只需稍微修改一下您发布的代码即可获得交换金额。

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;
    else
        freeMem = stats(3)/1e6;
    end
end

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

要计算矩阵占用多少内存,请使用数据类型的大小并乘以元素数作为第一个近似值。