/proc/kcore too big

36

Nothing in /proc is "real", it's a virtual filesystem that allows you to see inside the kernel. When you read or write from any of these files you're talking directly with the kernel, not actually creating files on disk. From man proc:

/proc/kcore

This file represents the physical memory of the system and is stored in the ELF core file format. With this pseudo-file, and an unstripped kernel (/usr/src/linux/vmlinux) binary, GDB can be used to examine the current state of any kernel data structures.

The total length of the file is the size of physical memory (RAM) plus 4KB.

I'm not sure how true the last line is; on my laptop /proc/kcore shows up as 128TB! It's more likely the size of the address space used by the kernel or something.

Regardless, if you need more disk space you need to look at the real filesystems. Take a look at the output of df -h to see where your space is running low. You can also then use the du command to see in more detail where space is really being used.

Interestingly, if you run du -h /proc/kcore you'll see it says 0. :)

Share:
36

Related videos on Youtube

Author by

dao hodac

Updated on September 18, 2022

Comments

  • dao hodac about 1 year

    I am migrating my application from Play1.2+Java7 to Play1.4+Java8

    Play1.2+Java7 my test passes OK Play1.4+Java8 my test fails.

    I have reduced the code to the minimum and reproduced the problem. Here is the main line

    The model is

    package models;
    import play.db.jpa.Model;
    import javax.persistence.Entity;
    @Entity
    public class Token extends Model {
        public String name;
        public String role;
    }
    

    The controller is

    package controllers;
    import models.Token;
    import play.mvc.Controller;
    public class Application extends Controller {
        public static void index() {
            renderJSON(Token.all().fetch());
        }
    }
    

    The DB test configuration is

    %test.application.mode=dev
    %test.db.url=jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
    %test.jpa.ddl=create
    

    The test is

    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import org.junit.*;
    import org.junit.Before;
    import play.test.*;
    import play.mvc.*;
    import play.mvc.Http.*;
    import models.*;
    public class ApplicationTest extends FunctionalTest {
        @Before
        public void before() {
            Token.deleteAll();
        }
        @Test
        public void testThatIndexPageWorks() {
            {
                Response response = GET("/");
                assertIsOk(response);
                String content = getContent(response);
                System.out.println(content);
                assertFalse(content.contains("le nom"));
                assertFalse(content.contains("identifier"));
            }
            Token t = new Token();
            t.name="le nom";
            t.role="identifier";
            t.save();
            {
                Response response = GET("/");
                assertIsOk(response);
                String content = getContent(response);
                System.out.println(content);
                assertTrue(content.contains("le nom"));
                assertTrue(content.contains("identifier"));
            }
        }
    }
    

    The behaviour is not predictable. It seems that saving entities in the tests are committed async and calling the controller depends on the threads while it did not in release 1.2

    I can provide the whole project if necessary

    • K7AAY
      K7AAY almost 10 years
      Which OS and version are you using?
    • Love2Code
      Love2Code almost 10 years
      I use Ubuntu 12.04