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

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













































































Popular posts from this blog

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

Bahrain

Postfix configuration issue with fips on centos 7; mailgun relay