Hello Vasily,
I've encountered the exactly same problem. The following patch
fix the problem.
Index: linux-2.6.14-f0.4-cpu-v0.2-mem/kernel/ckrm/Makefile
===================================================================
--- linux-2.6.14-f0.4-cpu-v0.2-mem.orig/kernel/ckrm/Makefile
+++ linux-2.6.14-f0.4-cpu-v0.2-mem/kernel/ckrm/Makefile
@@ -5,3 +5,4 @@
obj-y = ckrm.o ckrmutils.o ckrm_tc.o ckrm_iface.o
obj-$(CONFIG_CKRM_RES_NUMTASKS) += ckrm_numtasks.o
obj-$(CONFIG_CKRM_RES_CPU) += ckrm_cpu.o
+obj-$(CONFIG_CKRM_RES_MEM) += ckrm_memcore.o ckrm_memctlr.o
Thanks,
MAEDA Naoaki
Vasily Tarasov wrote:
Hello, Naoaki.
Thanks for your answers.
Tomorrow I was sure, that all conditions, you mentioned, were fulfilled.
But today I decided to repeat all procedure from the very beginning.
And now it works ok. So, I guess, it was my trouble!
Now I'm trying to use memory controller.
But after sucessfull patching 2.6.14 original kernel with mem_rc-f0.4
(and ckrm_core pathes before it, of course), the compilation doesn't
processed:
CC [M] lib/libcrc32c.o
LD arch/i386/lib/built-in.o
CC arch/i386/lib/bitops.o
AS arch/i386/lib/checksum.o
CC arch/i386/lib/delay.o
AS arch/i386/lib/getuser.o
CC arch/i386/lib/memcpy.o
AS arch/i386/lib/putuser.o
CC arch/i386/lib/strstr.o
CC arch/i386/lib/usercopy.o
AR arch/i386/lib/lib.a
GEN .version
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
kernel/built-in.o(.text+0x49e2): In function `mm_alloc':
: undefined reference to `mem_rcbs'
kernel/built-in.o(.text+0x4cfa): In function `copy_mm':
: undefined reference to `mem_rcbs'
kernel/built-in.o(.text+0x4d32): In function `copy_mm':
: undefined reference to `ckrm_get_maxshareclass'
kernel/built-in.o(.text+0x4d47): In function `copy_mm':
: undefined reference to `ckrm_mem_migrate_mm'
kernel/built-in.o(.text+0x94d2): In function `exit_mm':
: undefined reference to `ckrm_get_maxshareclass'
kernel/built-in.o(.text+0x94e7): In function `exit_mm':
: undefined reference to `ckrm_mem_migrate_mm'
mm/built-in.o(.text+0x57b8): In function `__alloc_pages':
: undefined reference to `mem_rcbs'
mm/built-in.o(.text+0x57e7): In function `__alloc_pages':
: undefined reference to `ckrm_class_limit_ok'
mm/built-in.o(.text+0x5c32): In function `__alloc_pages':
: undefined reference to `mem_rcbs'
mm/built-in.o(.text+0x5c55): In function `__alloc_pages':
: undefined reference to `ckrm_class_limit_ok'
mm/built-in.o(.text+0xb592): In function `activate_page':
: undefined reference to `ckrm_czindex'
mm/built-in.o(.text+0xb5a1): In function `activate_page':
: undefined reference to `sub_use_count'
mm/built-in.o(.text+0xb5a6): In function `activate_page':
: undefined reference to `memclass_release'
mm/built-in.o(.text+0xb5d7): In function `activate_page':
: undefined reference to `mem_rcbs'
mm/built-in.o(.text+0xb605): In function `activate_page':
: undefined reference to `ckrm_mem_root_class'
mm/built-in.o(.text+0xb621): In function `activate_page':
: undefined reference to `ckrm_czindex'
mm/built-in.o(.text+0xb662): In function `activate_page':
: undefined reference to `memclass_release'
mm/built-in.o(.text+0xb68c): In function `activate_page':
: undefined reference to `sub_use_count'
mm/built-in.o(.text+0xb6d5): In function `activate_page':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xb729): In function `activate_page':
: undefined reference to `ckrm_mem_root_class'
mm/built-in.o(.text+0xb7ba): In function `activate_page':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xba16): In function `__page_cache_release':
: undefined reference to `ckrm_czindex'
mm/built-in.o(.text+0xba2b): In function `__page_cache_release':
: undefined reference to `sub_use_count'
mm/built-in.o(.text+0xba30): In function `__page_cache_release':
: undefined reference to `memclass_release'
mm/built-in.o(.text+0xbbc6): In function `release_pages':
: undefined reference to `ckrm_czindex'
mm/built-in.o(.text+0xbbdb): In function `release_pages':
: undefined reference to `sub_use_count'
mm/built-in.o(.text+0xbbe0): In function `release_pages':
: undefined reference to `memclass_release'
mm/built-in.o(.text+0xbdfa): In function `__pagevec_lru_add':
: undefined reference to `mem_rcbs'
mm/built-in.o(.text+0xbe35): In function `__pagevec_lru_add':
: undefined reference to `ckrm_mem_root_class'
mm/built-in.o(.text+0xbe51): In function `__pagevec_lru_add':
: undefined reference to `ckrm_czindex'
mm/built-in.o(.text+0xbe92): In function `__pagevec_lru_add':
: undefined reference to `memclass_release'
mm/built-in.o(.text+0xbebc): In function `__pagevec_lru_add':
: undefined reference to `sub_use_count'
mm/built-in.o(.text+0xbf05): In function `__pagevec_lru_add':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xbf5d): In function `__pagevec_lru_add':
: undefined reference to `ckrm_mem_root_class'
mm/built-in.o(.text+0xc020): In function `__pagevec_lru_add':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xc12d): In function `__pagevec_lru_add_active':
: undefined reference to `mem_rcbs'
mm/built-in.o(.text+0xc165): In function `__pagevec_lru_add_active':
: undefined reference to `ckrm_mem_root_class'
mm/built-in.o(.text+0xc181): In function `__pagevec_lru_add_active':
: undefined reference to `ckrm_czindex'
mm/built-in.o(.text+0xc1c2): In function `__pagevec_lru_add_active':
: undefined reference to `memclass_release'
mm/built-in.o(.text+0xc1ec): In function `__pagevec_lru_add_active':
: undefined reference to `sub_use_count'
mm/built-in.o(.text+0xc235): In function `__pagevec_lru_add_active':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xc28d): In function `__pagevec_lru_add_active':
: undefined reference to `ckrm_mem_root_class'
mm/built-in.o(.text+0xc34b): In function `__pagevec_lru_add_active':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xd81d): In function `shrink_cache':
: undefined reference to `sub_use_count'
mm/built-in.o(.text+0xd831): In function `shrink_cache':
: undefined reference to `memclass_release'
mm/built-in.o(.text+0xd9aa): In function `shrink_cache':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xda72): In function `shrink_cache':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xdbb0): In function `refill_inactive_zone':
: undefined reference to `sub_use_count'
mm/built-in.o(.text+0xdbc1): In function `refill_inactive_zone':
: undefined reference to `memclass_release'
mm/built-in.o(.text+0xdd20): In function `refill_inactive_zone':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xde13): In function `refill_inactive_zone':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xded9): In function `refill_inactive_zone':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xdf91): In function `refill_inactive_zone':
: undefined reference to `add_use_count'
mm/built-in.o(.text+0xe22b): In function `ckrm_shrink_class':
: undefined reference to `ckrm_tot_lru_pages'
mm/built-in.o(.text+0xe268): In function `ckrm_shrink_class':
: undefined reference to `ckrm_mem_shrink_to'
mm/built-in.o(.text+0xe352): In function `ckrm_shrink_classes':
: undefined reference to `ckrm_mem_lock'
mm/built-in.o(.text+0xe361): In function `ckrm_shrink_classes':
: undefined reference to `ckrm_shrink_list'
mm/built-in.o(.text+0xe367): In function `ckrm_shrink_classes':
: undefined reference to `ckrm_shrink_list'
mm/built-in.o(.text+0xe36f): In function `ckrm_shrink_classes':
: undefined reference to `ckrm_mem_lock'
mm/built-in.o(.text+0xe38e): In function `ckrm_shrink_classes':
: undefined reference to `ckrm_mem_lock'
mm/built-in.o(.text+0xe3b3): In function `ckrm_shrink_classes':
: undefined reference to `ckrm_mem_lock'
mm/built-in.o(.text+0xe3be): In function `ckrm_shrink_classes':
: undefined reference to `ckrm_shrink_list'
mm/built-in.o(.text+0xe3c4): In function `ckrm_shrink_classes':
: undefined reference to `ckrm_shrink_list'
mm/built-in.o(.text+0xe47e): In function `shrink_zone':
: undefined reference to `ckrm_czindex'
mm/built-in.o(.text+0xe48f): In function `shrink_zone':
: undefined reference to `ckrm_get_max_overguar_czone'
mm/built-in.o(.text+0xe4c4): In function `shrink_zone':
: undefined reference to `memclass_release'
mm/built-in.o(.text+0xe8e4): In function `balance_pgdat':
: undefined reference to `ckrm_shrink_list'
mm/built-in.o(.text+0xe8e8): In function `balance_pgdat':
: undefined reference to `ckrm_shrink_list'
mm/built-in.o(.text+0xeb3d): In function `balance_pgdat':
: undefined reference to `ckrm_shrink_list'
mm/built-in.o(.text+0xeb41): In function `balance_pgdat':
: undefined reference to `ckrm_shrink_list'
mm/built-in.o(.text+0xec49): In function `kswapd':
: undefined reference to `ckrm_shrink_list'
mm/built-in.o(.text+0xec4d): more undefined references to
`ckrm_shrink_list' fol low
fs/built-in.o(.text+0xe1b4): In function `exec_mmap':
: undefined reference to `ckrm_get_maxshareclass'
fs/built-in.o(.text+0xe1c9): In function `exec_mmap':
: undefined reference to `ckrm_mem_migrate_mm'
fs/built-in.o(.text+0xe20a): In function `exec_mmap':
: undefined reference to `ckrm_get_maxshareclass'
fs/built-in.o(.text+0xe223): In function `exec_mmap':
: undefined reference to `ckrm_mem_migrate_mm'
make: *** [.tmp_vmlinux1] Error 1
Can anybody tell me the reason?
Thanks.
MAEDA Naoaki wrote:
Hello again,
Vasily Tarasov wrote:
Hello, once again!
That's my way to get CPU controller work:
I just run task with infinite loop in backgroung, in order to load CPU.
Create 2 classes, and put there the same application (other process,
of cource)
dhcp0-138 ~ # ls /config/ckrm/
attrib class1 class2 config members shares stats
dhcp0-138 ~ # cat /config/ckrm/shares
res=numtasks,guarantee=-2,limit=-2,total_guarantee=100,max_limit=100
res=cpu,guarantee=100,limit=-2,total_guarantee=100,max_limit=-2
dhcp0-138 ~ # cat /config/ckrm/class1/shares
res=numtasks,guarantee=-2,limit=-2,total_guarantee=100,max_limit=100
res=cpu,guarantee=10,limit=-2,total_guarantee=100,max_limit=-2
dhcp0-138 ~ # cat /config/ckrm/class2/shares
res=numtasks,guarantee=-2,limit=-2,total_guarantee=100,max_limit=100
res=cpu,guarantee=90,limit=-2,total_guarantee=100,max_limit=-2
dhcp0-138 ~ # top
21257 root 25 0 1308 252 200 R 33.2 0.0 3:37.82 a.out
21258 root 25 0 1304 248 200 R 33.2 0.0 3:37.34 a.out
21238 root 25 0 1304 252 200 R 32.6 0.0 5:41.24 a.out
^^^
So, I can't see any propotionality...
ctop shoes strange info:
ClassName: cpu load (%)
-------------------------------|--------------|
ckrm : 0.00
class1 : 0.00
class2 : 0.00
this is f0.4 series.
Can you comment this situation, please?
Even if all of the a.out belong to the default class, ctop might
show as following:
ClassName: cpu load (%)
-------------------------------|--------------|
ckrm : 95.00 <-- Default class's load
class1 : 0.00
class2 : 0.00
Only one thing I can come up with is kernel misconfiguration.
Could you check if CONFIG_CPU_RC=y is defined in your .config file?
In my intention, it is automatically defined by selecting
CONFIG_CKRM_RES_CPU, though.
- cited from init/Kconfig
config CKRM_RES_CPU
bool "CPU Resource Controller"
select CPU_RC
depends on CKRM
default y
help
Provides a CPU Resource Controller for CKRM.
Say N if unsure, Y to use the feature.
Thanks,
MAEDA Naoaki
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log
files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
ckrm-tech mailing list
https://lists.sourceforge.net/lists/listinfo/ckrm-tech
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
ckrm-tech mailing list
https://lists.sourceforge.net/lists/listinfo/ckrm-tech