Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
slash
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
uplex-varnish
slash
Commits
a3b549d8
Unverified
Commit
a3b549d8
authored
Aug 02, 2023
by
Nils Goroll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move fibonacci hash
parent
5b11a83a
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
14 additions
and
15 deletions
+14
-15
fellow_cache_storage.h
src/fellow_cache_storage.h
+13
-0
fellow_storage.c
src/fellow_storage.c
+1
-15
No files found.
src/fellow_cache_storage.h
View file @
a3b549d8
...
@@ -33,3 +33,16 @@ void stvfe_oc_dle_obj(struct objcore *oc, struct fellow_dle *e);
...
@@ -33,3 +33,16 @@ void stvfe_oc_dle_obj(struct objcore *oc, struct fellow_dle *e);
int
stvfe_mutate
(
struct
worker
*
wrk
,
struct
fellow_cache_lru
*
lru
,
int
stvfe_mutate
(
struct
worker
*
wrk
,
struct
fellow_cache_lru
*
lru
,
struct
objcore
*
oc
);
struct
objcore
*
oc
);
void
stvfe_sumstat
(
struct
worker
*
wrk
);
// wraps Pool_Sumstat(wrk);
void
stvfe_sumstat
(
struct
worker
*
wrk
);
// wraps Pool_Sumstat(wrk);
// https://probablydance.com/2018/06/16/fibonacci-hashing-the-optimization-that-the-world-forgot-or-a-better-alternative-to-integer-modulo/
static
inline
size_t
fib
(
uint64_t
n
,
uint8_t
bits
)
{
const
size_t
gr
=
11400714819323198485LLU
;
size_t
r
;
r
=
n
*
gr
;
r
>>=
(
sizeof
(
gr
)
*
8
)
-
bits
;
assert
(
r
<
(
size_t
)
1
<<
bits
);
return
(
r
);
}
src/fellow_storage.c
View file @
a3b549d8
...
@@ -217,19 +217,6 @@ stvfe_wait_tune(struct stvfe_wait **swp, uint8_t pow2)
...
@@ -217,19 +217,6 @@ stvfe_wait_tune(struct stvfe_wait **swp, uint8_t pow2)
AZ
(
sw
);
AZ
(
sw
);
}
}
// https://probablydance.com/2018/06/16/fibonacci-hashing-the-optimization-that-the-world-forgot-or-a-better-alternative-to-integer-modulo/
static
inline
size_t
stvfe_wait_fib
(
const
struct
stvfe_wait
*
sw
,
uint64_t
priv
)
{
const
size_t
gr
=
11400714819323198485llu
;
//lint !e620
size_t
r
;
r
=
priv
*
gr
;
r
>>=
(
sizeof
(
gr
)
*
8
)
-
sw
->
bits
;
return
(
r
);
}
static
struct
stvfe_wait_entry
*
static
struct
stvfe_wait_entry
*
stvfe_wait
(
struct
stvfe_wait
*
sw
,
uint64_t
priv
)
stvfe_wait
(
struct
stvfe_wait
*
sw
,
uint64_t
priv
)
{
{
...
@@ -238,8 +225,7 @@ stvfe_wait(struct stvfe_wait *sw, uint64_t priv)
...
@@ -238,8 +225,7 @@ stvfe_wait(struct stvfe_wait *sw, uint64_t priv)
CHECK_OBJ_NOTNULL
(
sw
,
STVFE_WAIT_MAGIC
);
CHECK_OBJ_NOTNULL
(
sw
,
STVFE_WAIT_MAGIC
);
AN
(
priv
);
AN
(
priv
);
i
=
stvfe_wait_fib
(
sw
,
priv
);
i
=
fib
(
priv
,
sw
->
bits
);
assert
(
i
<
((
size_t
)
1
<<
sw
->
bits
));
e
=
&
sw
->
e
[
i
];
e
=
&
sw
->
e
[
i
];
AZ
(
pthread_mutex_lock
(
&
e
->
mtx
));
AZ
(
pthread_mutex_lock
(
&
e
->
mtx
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment