How to display virtual memory split on the running linux kernel?
Clash 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?
linux linux-kernel raspberry-pi embedded beagleboneblack
 |Â
show 1 more comment
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?
linux linux-kernel raspberry-pi embedded beagleboneblack
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
 |Â
show 1 more comment
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?
linux linux-kernel raspberry-pi embedded beagleboneblack
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
linux linux-kernel raspberry-pi embedded beagleboneblack
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
 |Â
show 1 more comment
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
 |Â
show 1 more comment
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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