How to display virtual memory split on the running linux kernel?

Multi tool use
Multi tool use

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
0
down vote

favorite












I would like to know how to display the information of the memory split of the running kernel in linux. I am new to this. I've read that it's most of the time 3G/1G for user-space/kernel-space (also called high memory/low memory). However I am trying to install wine + qemu on a beaglebone black wireless, in a similar fashion to this and it seems that it requires a 2G/2G version of wine (or a 3G/1G version of the pi kernel according to this post on the raspberry forum.
I found out that I can see the virtual memory layout with dmesg. For example I see this result on a raspbian image :



[ 0.000000] Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xdc800000 - 0xff800000 ( 560 MB)
lowmem : 0xc0000000 - 0xdc000000 ( 448 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.text : 0xc0008000 - 0xc05d6bbc (5947 kB)
.init : 0xc0840000 - 0xc08a4000 ( 400 kB)
.data : 0xc08a4000 - 0xc091e728 ( 490 kB)
.bss : 0xc091e728 - 0xc09d5f28 ( 734 kB)


My understanding is that, since the lowmem starts at 0xc0000000, it means the split is 3G/1G (since 0xc0000000 = 3GB). But I am not sure wether this is correct. I would like to know the proper way to know the memory split (and if there is another way than through dmesg). And if possible I would like to know what would be the advantages of giving more kernel space (2G/2G) or what would drive such a choice?










share|improve this question





















  • I don't know where your definition of high memory comes from, but high memory usually refers to RAM that is not directly mapped in the virtual address space. On a 32-bit CPU, the physical RAM is mapped in the virtual address space beginning at 0xc0000000 (3G/1G split), or 0x80000000 (2G/2G) split. Because computers nowadays typically contain more than 1 or 2 GB RAM, the last 128 MB of the virtual address space is used for temporary mappings of RAM that doesn't fit in the direct mapping. A 2G/2G split has the advantage that more RAM fits in the direct mapping, but reduces the user space to 2G.
    – Johan Myréen
    Aug 7 at 8:04










  • Here it is said that the high memory is user space memory. Here the same kind of explanation is given. To be honnest I only started reading on the subject and I don't fully grasp the concepts yet but I don't think this definition conflicts with your statement.
    – Flabou
    Aug 7 at 12:29











  • The first link you provided contains answers that are confusing and contradictionary. The accepted answer uses the term in a way that is not normally used with Linux; it states that high mem is users space and low mem is the kernel space. This definition does not make sense in Linux, because the kernel space is at higher addresses. I think these terms come from old OS literature. The Wikipedia article agrees with the Linux term: "memory that the kernel cannot refer to directly—this is called high memory." 64-bit operating systems don't (yet!) suffer from this mess.
    – Johan Myréen
    Aug 7 at 13:01










  • To me it made sense, it depends how you interpret it, I didn't interpret it as higher in the sense that it starts at a bigger address, I first interpreted it as higher in the same sense that we talk about high and low level languages (lower = closer to the machine). Since it seems that there is usually more memory in the memory mapped to the user space, it could also be interpreted as high/low capacity memory. But it's a personnal interpretation. Also from wikipedia : "...divide their virtual address space into two regions, devoting the larger to user space and the smaller to the kernel".
    – Flabou
    Aug 7 at 13:39










  • But anyway my main question was how to display wether I'm on 3G/1G ; 2G/2G ; etc. And what are the factors that drive the choice of 2G/2G (for instance). Can you help on that?
    – Flabou
    Aug 7 at 13:44














up vote
0
down vote

favorite












I would like to know how to display the information of the memory split of the running kernel in linux. I am new to this. I've read that it's most of the time 3G/1G for user-space/kernel-space (also called high memory/low memory). However I am trying to install wine + qemu on a beaglebone black wireless, in a similar fashion to this and it seems that it requires a 2G/2G version of wine (or a 3G/1G version of the pi kernel according to this post on the raspberry forum.
I found out that I can see the virtual memory layout with dmesg. For example I see this result on a raspbian image :



[ 0.000000] Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xdc800000 - 0xff800000 ( 560 MB)
lowmem : 0xc0000000 - 0xdc000000 ( 448 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.text : 0xc0008000 - 0xc05d6bbc (5947 kB)
.init : 0xc0840000 - 0xc08a4000 ( 400 kB)
.data : 0xc08a4000 - 0xc091e728 ( 490 kB)
.bss : 0xc091e728 - 0xc09d5f28 ( 734 kB)


My understanding is that, since the lowmem starts at 0xc0000000, it means the split is 3G/1G (since 0xc0000000 = 3GB). But I am not sure wether this is correct. I would like to know the proper way to know the memory split (and if there is another way than through dmesg). And if possible I would like to know what would be the advantages of giving more kernel space (2G/2G) or what would drive such a choice?










share|improve this question





















  • I don't know where your definition of high memory comes from, but high memory usually refers to RAM that is not directly mapped in the virtual address space. On a 32-bit CPU, the physical RAM is mapped in the virtual address space beginning at 0xc0000000 (3G/1G split), or 0x80000000 (2G/2G) split. Because computers nowadays typically contain more than 1 or 2 GB RAM, the last 128 MB of the virtual address space is used for temporary mappings of RAM that doesn't fit in the direct mapping. A 2G/2G split has the advantage that more RAM fits in the direct mapping, but reduces the user space to 2G.
    – Johan Myréen
    Aug 7 at 8:04










  • Here it is said that the high memory is user space memory. Here the same kind of explanation is given. To be honnest I only started reading on the subject and I don't fully grasp the concepts yet but I don't think this definition conflicts with your statement.
    – Flabou
    Aug 7 at 12:29











  • The first link you provided contains answers that are confusing and contradictionary. The accepted answer uses the term in a way that is not normally used with Linux; it states that high mem is users space and low mem is the kernel space. This definition does not make sense in Linux, because the kernel space is at higher addresses. I think these terms come from old OS literature. The Wikipedia article agrees with the Linux term: "memory that the kernel cannot refer to directly—this is called high memory." 64-bit operating systems don't (yet!) suffer from this mess.
    – Johan Myréen
    Aug 7 at 13:01










  • To me it made sense, it depends how you interpret it, I didn't interpret it as higher in the sense that it starts at a bigger address, I first interpreted it as higher in the same sense that we talk about high and low level languages (lower = closer to the machine). Since it seems that there is usually more memory in the memory mapped to the user space, it could also be interpreted as high/low capacity memory. But it's a personnal interpretation. Also from wikipedia : "...divide their virtual address space into two regions, devoting the larger to user space and the smaller to the kernel".
    – Flabou
    Aug 7 at 13:39










  • But anyway my main question was how to display wether I'm on 3G/1G ; 2G/2G ; etc. And what are the factors that drive the choice of 2G/2G (for instance). Can you help on that?
    – Flabou
    Aug 7 at 13:44












up vote
0
down vote

favorite









up vote
0
down vote

favorite











I would like to know how to display the information of the memory split of the running kernel in linux. I am new to this. I've read that it's most of the time 3G/1G for user-space/kernel-space (also called high memory/low memory). However I am trying to install wine + qemu on a beaglebone black wireless, in a similar fashion to this and it seems that it requires a 2G/2G version of wine (or a 3G/1G version of the pi kernel according to this post on the raspberry forum.
I found out that I can see the virtual memory layout with dmesg. For example I see this result on a raspbian image :



[ 0.000000] Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xdc800000 - 0xff800000 ( 560 MB)
lowmem : 0xc0000000 - 0xdc000000 ( 448 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.text : 0xc0008000 - 0xc05d6bbc (5947 kB)
.init : 0xc0840000 - 0xc08a4000 ( 400 kB)
.data : 0xc08a4000 - 0xc091e728 ( 490 kB)
.bss : 0xc091e728 - 0xc09d5f28 ( 734 kB)


My understanding is that, since the lowmem starts at 0xc0000000, it means the split is 3G/1G (since 0xc0000000 = 3GB). But I am not sure wether this is correct. I would like to know the proper way to know the memory split (and if there is another way than through dmesg). And if possible I would like to know what would be the advantages of giving more kernel space (2G/2G) or what would drive such a choice?










share|improve this question













I would like to know how to display the information of the memory split of the running kernel in linux. I am new to this. I've read that it's most of the time 3G/1G for user-space/kernel-space (also called high memory/low memory). However I am trying to install wine + qemu on a beaglebone black wireless, in a similar fashion to this and it seems that it requires a 2G/2G version of wine (or a 3G/1G version of the pi kernel according to this post on the raspberry forum.
I found out that I can see the virtual memory layout with dmesg. For example I see this result on a raspbian image :



[ 0.000000] Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xdc800000 - 0xff800000 ( 560 MB)
lowmem : 0xc0000000 - 0xdc000000 ( 448 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.text : 0xc0008000 - 0xc05d6bbc (5947 kB)
.init : 0xc0840000 - 0xc08a4000 ( 400 kB)
.data : 0xc08a4000 - 0xc091e728 ( 490 kB)
.bss : 0xc091e728 - 0xc09d5f28 ( 734 kB)


My understanding is that, since the lowmem starts at 0xc0000000, it means the split is 3G/1G (since 0xc0000000 = 3GB). But I am not sure wether this is correct. I would like to know the proper way to know the memory split (and if there is another way than through dmesg). And if possible I would like to know what would be the advantages of giving more kernel space (2G/2G) or what would drive such a choice?







linux linux-kernel raspberry-pi embedded beagleboneblack






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Aug 7 at 6:38









Flabou

1




1











  • I don't know where your definition of high memory comes from, but high memory usually refers to RAM that is not directly mapped in the virtual address space. On a 32-bit CPU, the physical RAM is mapped in the virtual address space beginning at 0xc0000000 (3G/1G split), or 0x80000000 (2G/2G) split. Because computers nowadays typically contain more than 1 or 2 GB RAM, the last 128 MB of the virtual address space is used for temporary mappings of RAM that doesn't fit in the direct mapping. A 2G/2G split has the advantage that more RAM fits in the direct mapping, but reduces the user space to 2G.
    – Johan Myréen
    Aug 7 at 8:04










  • Here it is said that the high memory is user space memory. Here the same kind of explanation is given. To be honnest I only started reading on the subject and I don't fully grasp the concepts yet but I don't think this definition conflicts with your statement.
    – Flabou
    Aug 7 at 12:29











  • The first link you provided contains answers that are confusing and contradictionary. The accepted answer uses the term in a way that is not normally used with Linux; it states that high mem is users space and low mem is the kernel space. This definition does not make sense in Linux, because the kernel space is at higher addresses. I think these terms come from old OS literature. The Wikipedia article agrees with the Linux term: "memory that the kernel cannot refer to directly—this is called high memory." 64-bit operating systems don't (yet!) suffer from this mess.
    – Johan Myréen
    Aug 7 at 13:01










  • To me it made sense, it depends how you interpret it, I didn't interpret it as higher in the sense that it starts at a bigger address, I first interpreted it as higher in the same sense that we talk about high and low level languages (lower = closer to the machine). Since it seems that there is usually more memory in the memory mapped to the user space, it could also be interpreted as high/low capacity memory. But it's a personnal interpretation. Also from wikipedia : "...divide their virtual address space into two regions, devoting the larger to user space and the smaller to the kernel".
    – Flabou
    Aug 7 at 13:39










  • But anyway my main question was how to display wether I'm on 3G/1G ; 2G/2G ; etc. And what are the factors that drive the choice of 2G/2G (for instance). Can you help on that?
    – Flabou
    Aug 7 at 13:44
















  • I don't know where your definition of high memory comes from, but high memory usually refers to RAM that is not directly mapped in the virtual address space. On a 32-bit CPU, the physical RAM is mapped in the virtual address space beginning at 0xc0000000 (3G/1G split), or 0x80000000 (2G/2G) split. Because computers nowadays typically contain more than 1 or 2 GB RAM, the last 128 MB of the virtual address space is used for temporary mappings of RAM that doesn't fit in the direct mapping. A 2G/2G split has the advantage that more RAM fits in the direct mapping, but reduces the user space to 2G.
    – Johan Myréen
    Aug 7 at 8:04










  • Here it is said that the high memory is user space memory. Here the same kind of explanation is given. To be honnest I only started reading on the subject and I don't fully grasp the concepts yet but I don't think this definition conflicts with your statement.
    – Flabou
    Aug 7 at 12:29











  • The first link you provided contains answers that are confusing and contradictionary. The accepted answer uses the term in a way that is not normally used with Linux; it states that high mem is users space and low mem is the kernel space. This definition does not make sense in Linux, because the kernel space is at higher addresses. I think these terms come from old OS literature. The Wikipedia article agrees with the Linux term: "memory that the kernel cannot refer to directly—this is called high memory." 64-bit operating systems don't (yet!) suffer from this mess.
    – Johan Myréen
    Aug 7 at 13:01










  • To me it made sense, it depends how you interpret it, I didn't interpret it as higher in the sense that it starts at a bigger address, I first interpreted it as higher in the same sense that we talk about high and low level languages (lower = closer to the machine). Since it seems that there is usually more memory in the memory mapped to the user space, it could also be interpreted as high/low capacity memory. But it's a personnal interpretation. Also from wikipedia : "...divide their virtual address space into two regions, devoting the larger to user space and the smaller to the kernel".
    – Flabou
    Aug 7 at 13:39










  • But anyway my main question was how to display wether I'm on 3G/1G ; 2G/2G ; etc. And what are the factors that drive the choice of 2G/2G (for instance). Can you help on that?
    – Flabou
    Aug 7 at 13:44















I don't know where your definition of high memory comes from, but high memory usually refers to RAM that is not directly mapped in the virtual address space. On a 32-bit CPU, the physical RAM is mapped in the virtual address space beginning at 0xc0000000 (3G/1G split), or 0x80000000 (2G/2G) split. Because computers nowadays typically contain more than 1 or 2 GB RAM, the last 128 MB of the virtual address space is used for temporary mappings of RAM that doesn't fit in the direct mapping. A 2G/2G split has the advantage that more RAM fits in the direct mapping, but reduces the user space to 2G.
– Johan Myréen
Aug 7 at 8:04




I don't know where your definition of high memory comes from, but high memory usually refers to RAM that is not directly mapped in the virtual address space. On a 32-bit CPU, the physical RAM is mapped in the virtual address space beginning at 0xc0000000 (3G/1G split), or 0x80000000 (2G/2G) split. Because computers nowadays typically contain more than 1 or 2 GB RAM, the last 128 MB of the virtual address space is used for temporary mappings of RAM that doesn't fit in the direct mapping. A 2G/2G split has the advantage that more RAM fits in the direct mapping, but reduces the user space to 2G.
– Johan Myréen
Aug 7 at 8:04












Here it is said that the high memory is user space memory. Here the same kind of explanation is given. To be honnest I only started reading on the subject and I don't fully grasp the concepts yet but I don't think this definition conflicts with your statement.
– Flabou
Aug 7 at 12:29





Here it is said that the high memory is user space memory. Here the same kind of explanation is given. To be honnest I only started reading on the subject and I don't fully grasp the concepts yet but I don't think this definition conflicts with your statement.
– Flabou
Aug 7 at 12:29













The first link you provided contains answers that are confusing and contradictionary. The accepted answer uses the term in a way that is not normally used with Linux; it states that high mem is users space and low mem is the kernel space. This definition does not make sense in Linux, because the kernel space is at higher addresses. I think these terms come from old OS literature. The Wikipedia article agrees with the Linux term: "memory that the kernel cannot refer to directly—this is called high memory." 64-bit operating systems don't (yet!) suffer from this mess.
– Johan Myréen
Aug 7 at 13:01




The first link you provided contains answers that are confusing and contradictionary. The accepted answer uses the term in a way that is not normally used with Linux; it states that high mem is users space and low mem is the kernel space. This definition does not make sense in Linux, because the kernel space is at higher addresses. I think these terms come from old OS literature. The Wikipedia article agrees with the Linux term: "memory that the kernel cannot refer to directly—this is called high memory." 64-bit operating systems don't (yet!) suffer from this mess.
– Johan Myréen
Aug 7 at 13:01












To me it made sense, it depends how you interpret it, I didn't interpret it as higher in the sense that it starts at a bigger address, I first interpreted it as higher in the same sense that we talk about high and low level languages (lower = closer to the machine). Since it seems that there is usually more memory in the memory mapped to the user space, it could also be interpreted as high/low capacity memory. But it's a personnal interpretation. Also from wikipedia : "...divide their virtual address space into two regions, devoting the larger to user space and the smaller to the kernel".
– Flabou
Aug 7 at 13:39




To me it made sense, it depends how you interpret it, I didn't interpret it as higher in the sense that it starts at a bigger address, I first interpreted it as higher in the same sense that we talk about high and low level languages (lower = closer to the machine). Since it seems that there is usually more memory in the memory mapped to the user space, it could also be interpreted as high/low capacity memory. But it's a personnal interpretation. Also from wikipedia : "...divide their virtual address space into two regions, devoting the larger to user space and the smaller to the kernel".
– Flabou
Aug 7 at 13:39












But anyway my main question was how to display wether I'm on 3G/1G ; 2G/2G ; etc. And what are the factors that drive the choice of 2G/2G (for instance). Can you help on that?
– Flabou
Aug 7 at 13:44




But anyway my main question was how to display wether I'm on 3G/1G ; 2G/2G ; etc. And what are the factors that drive the choice of 2G/2G (for instance). Can you help on that?
– Flabou
Aug 7 at 13:44















active

oldest

votes











Your Answer







StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: false,
noModals: false,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













 

draft saved


draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f460965%2fhow-to-display-virtual-memory-split-on-the-running-linux-kernel%23new-answer', 'question_page');

);

Post as a guest



































active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes















 

draft saved


draft discarded















































 


draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f460965%2fhow-to-display-virtual-memory-split-on-the-running-linux-kernel%23new-answer', 'question_page');

);

Post as a guest













































































fP,UR,2g sIC K54notzpmbM1yq7HTEWeojY,glYArTHDqPMiv
OwN5PP7X,B H V26mX,LYZv 2A eWIr2APCDDI7kik1Bq3ze2,S,iwv033jQ2b

Popular posts from this blog

How to check contact read email or not when send email to Individual?

How many registers does an x86_64 CPU actually have?

Displaying single band from multi-band raster using QGIS