R报告的内存使用率差异以及Linux OS报告的内存使用率差异

时间:2015-03-01 06:25:35

标签: r centos

我在磁盘上有一个大小约为5.9GB的CSV文件。我在R中读取此文件并测量其大小。我发现它的R大小约为7.7 GB。但是我发现文件读取后OS占用了大约22GB的额外空间。记忆职业的这种巨大差异尚不清楚。

以下是详细信息。我使用以下命令读取R中的文件:

    data<-read.csv("train.csv",header=TRUE, colClasses=c('character','factor','numeric',rep('factor',21)))

该文件有24个功能。一个字符,一个数字和所有其他因素。在读取文件时,我在R中检查'data'对象的大小。我的大小约为7.7 GB,如下所示:

    > library(pryr)
    > object_size(data)
    7.72 GB
    > object.size(data)
    7720196888 bytes
    > ls()
    [1] "data"

但是,我的操作系统会报告额外的内存消耗。读取csv文件之前和之后的差异大约是22Gb,远远超过R报告的7.7GB。我记忆消耗之前和之后如下。请看下面的RAM( MemTotal MemFree )和SWAP( SwapTotal SwapFree )几乎完全未使用:

    Before reading CSV file:

    [xyz@master ~]$ cat /proc/meminfo 
    MemTotal:       16169156 kB
    MemFree:        14437468 kB
    Buffers:           47676 kB
    Cached:           492140 kB
    SwapCached:            0 kB
    Active:          1036052 kB
    Inactive:         439512 kB
    Active(anon):     936628 kB
    Inactive(anon):   135584 kB
    Active(file):      99424 kB
    Inactive(file):   303928 kB
    Unevictable:           0 kB
    Mlocked:               0 kB
    SwapTotal:      28631036 kB
    SwapFree:       28631036 kB
    Dirty:               100 kB
    Writeback:             0 kB
    AnonPages:        937792 kB
    Mapped:           184784 kB
    Shmem:            136468 kB
    Slab:              75220 kB
    SReclaimable:      39404 kB
    SUnreclaim:        35816 kB
    KernelStack:        3040 kB
    PageTables:        31976 kB
    NFS_Unstable:          0 kB
    Bounce:                0 kB
    WritebackTmp:          0 kB
    CommitLimit:    36715612 kB
    Committed_AS:    5681212 kB
    VmallocTotal:   34359738367 kB
    VmallocUsed:      386168 kB
    VmallocChunk:   34359345404 kB
    HardwareCorrupted:     0 kB
    AnonHugePages:    749568 kB
    HugePages_Total:       0
    HugePages_Free:        0
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    DirectMap4k:        8192 kB
    DirectMap2M:    16611328 kB 

在R中读取5.9GB csv文件后,内存消耗如下。 RAM几乎被完全使用(额外用完了大约13GB),9GB的SWAP也用完了。

    After reading CSV file:       

    [xyz@master ~]$ cat /proc/meminfo 
    MemTotal:       16169156 kB
    MemFree:          945528 kB
    Buffers:           17996 kB
    Cached:           243140 kB
    SwapCached:      5924192 kB
    Active:         12021068 kB
    Inactive:        2918636 kB
    Active(anon):   11969848 kB
    Inactive(anon):  2758740 kB
    Active(file):      51220 kB
    Inactive(file):   159896 kB
    Unevictable:           0 kB
    Mlocked:               0 kB
    SwapTotal:      28631036 kB
    SwapFree:       18888240 kB
    Dirty:                68 kB
    Writeback:             0 kB
    AnonPages:      13982076 kB
    Mapped:            58652 kB
    Shmem:             50020 kB
    Slab:              69332 kB
    SReclaimable:      32176 kB
    SUnreclaim:        37156 kB
    KernelStack:        3304 kB
    PageTables:        68284 kB
    NFS_Unstable:          0 kB
    Bounce:                0 kB
    WritebackTmp:          0 kB
    CommitLimit:    36715612 kB
    Committed_AS:   23674336 kB
    VmallocTotal:   34359738367 kB
    VmallocUsed:      386168 kB
    VmallocChunk:   34359345404 kB
    HardwareCorrupted:     0 kB
    AnonHugePages:   4655104 kB
    HugePages_Total:       0
    HugePages_Free:        0
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    DirectMap4k:        8192 kB
    DirectMap2M:    16611328 kB

存储器使用中存在如此大的差异,即由R报告的一个和OS报告的另一个(我有CentOS)不明白。

我将很感激解释。

0 个答案:

没有答案