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

时间:2016-07-26 15:46:26

标签: linux matlab ubuntu memory swap

情况:估计你是否可以用Linux Matlab中的Ram和Swap计算大矩阵 我需要MemSwap之和,在{Heading total 下的free -m对应的值

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

Matlab中的免费Ram内存

% http://stackoverflow.com/a/12350678/54964
[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的Matrix大小之间的关系:...

测试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-mid
拉姆:8 GB
交换:SSD上28 Gb(如线程How to Allocate More Space to Swap and Increase its Size Greater than Ram?中设置)
SSD:128 GB

1 个答案:

答案 0 :(得分:3)

您可以稍微修改您发布的代码以获取掉期金额。

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

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