mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2025-03-23 23:07:04 +00:00
More accurate allocator internal log
This commit is contained in:
parent
c82f7ed4aa
commit
2d7c8f4d5c
@ -69,7 +69,6 @@ long page_size = 0;
|
|||||||
|
|
||||||
# define AJT_ALLOC_LOCAL_HOT 1
|
# define AJT_ALLOC_LOCAL_HOT 1
|
||||||
# define AJT_ALLOC_GLOBAL_HOT 2
|
# define AJT_ALLOC_GLOBAL_HOT 2
|
||||||
# define AJT_ALLOC_COLD_STD 3
|
|
||||||
# define AJT_ALLOC_COLD_KEEPER 4
|
# define AJT_ALLOC_COLD_KEEPER 4
|
||||||
# define AJT_ALLOC_MMAP 5
|
# define AJT_ALLOC_MMAP 5
|
||||||
|
|
||||||
@ -82,6 +81,7 @@ long page_size = 0;
|
|||||||
# define AJT_CLEANUP_BEGIN 0xcb
|
# define AJT_CLEANUP_BEGIN 0xcb
|
||||||
# define AJT_CLEANUP_END 0xce
|
# define AJT_CLEANUP_END 0xce
|
||||||
|
|
||||||
|
# define AJT_FLUSH_COLD 0xfc
|
||||||
# define AJT_FLUSH_LOCAL_BEGIN 0xfb
|
# define AJT_FLUSH_LOCAL_BEGIN 0xfb
|
||||||
# define AJT_FLUSH_LOCAL_END 0xfe
|
# define AJT_FLUSH_LOCAL_END 0xfe
|
||||||
# define AJT_SCHEDULE_CLEANUP 0xff
|
# define AJT_SCHEDULE_CLEANUP 0xff
|
||||||
@ -96,6 +96,14 @@ long page_size = 0;
|
|||||||
.type = type,
|
.type = type,
|
||||||
.thread_id = THIS_THREAD_ID,
|
.thread_id = THIS_THREAD_ID,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
log(L_TRACE "ajlog %s: %p, %p, %u, %u",
|
||||||
|
(type < 0x10) ? "alloc" : (type < 0x20) ? "free" :
|
||||||
|
(type < 0xcf) ? "cleanup" : "flush",
|
||||||
|
fp, next, pos, type);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct free_page {
|
struct free_page {
|
||||||
@ -248,15 +256,17 @@ alloc_page(void)
|
|||||||
|
|
||||||
/* We flush all the pages in this block to the hot page cache
|
/* We flush all the pages in this block to the hot page cache
|
||||||
* and return the keeper page as allocated. */
|
* and return the keeper page as allocated. */
|
||||||
ajlog(fp, empty_pages, empty_pages->pos, AJT_ALLOC_COLD_STD);
|
|
||||||
if (empty_pages->pos)
|
if (empty_pages->pos)
|
||||||
{
|
{
|
||||||
/* Link one after another */
|
/* Link one after another */
|
||||||
for (uint i = 0; i < empty_pages->pos - 1; i++)
|
for (uint i = 0; i < empty_pages->pos - 1; i++)
|
||||||
|
{
|
||||||
|
ajlog(empty_pages->pages[i], empty_pages, empty_pages->pos, AJT_FLUSH_COLD);
|
||||||
atomic_store_explicit(
|
atomic_store_explicit(
|
||||||
&((struct free_page *) empty_pages->pages[i])->next,
|
&((struct free_page *) empty_pages->pages[i])->next,
|
||||||
empty_pages->pages[i+1],
|
empty_pages->pages[i+1],
|
||||||
memory_order_relaxed);
|
memory_order_relaxed);
|
||||||
|
}
|
||||||
|
|
||||||
/* And put into the hot page cache */
|
/* And put into the hot page cache */
|
||||||
atomic_store_explicit(
|
atomic_store_explicit(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user