Skip to content

Commit d8ab791

Browse files
committed
fix example
1 parent 2140d35 commit d8ab791

8 files changed

Lines changed: 233 additions & 82 deletions

File tree

Lines changed: 56 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,66 @@
1-
cmake_minimum_required(VERSION 3.10)
2-
# Collect source files
3-
project(cacheCluster)
1+
cmake_minimum_required (VERSION 3.10)
2+
project (cacheCluster)
3+
44
set(CMAKE_CXX_STANDARD 17)
5-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
5+
set(CMAKE_CXX_STANDARD_REQUIRED On)
6+
set(CMAKE_CXX_EXTENSIONS Off)
7+
68
# Find required packages
7-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/../../cmake/Modules/")
9+
find_package(PkgConfig REQUIRED)
10+
pkg_check_modules(GLIB REQUIRED glib-2.0)
11+
12+
# Find ZSTD library
13+
find_library(ZSTD_LIBRARY
14+
NAMES zstd libzstd
15+
PATHS /usr/local/lib /usr/lib /opt/homebrew/lib
16+
DOC "ZSTD library"
17+
)
18+
19+
find_path(ZSTD_INCLUDE_DIR
20+
NAMES zstd.h
21+
PATHS /usr/local/include /usr/include /opt/homebrew/include
22+
DOC "ZSTD include directory"
23+
)
24+
25+
include_directories(${ZSTD_INCLUDE_DIR})
26+
message(STATUS "ZSTD library: ${ZSTD_LIBRARY}")
27+
message(STATUS "ZSTD include: ${ZSTD_INCLUDE_DIR}")
828

9-
find_package(GLib "2.40" REQUIRED)
10-
message(STATUS "GLib found: ${GLib_LIBRARY}")
29+
# Find libCacheSim
30+
find_library(LIBCACHESIM_LIBRARY
31+
NAMES CacheSim libCacheSim
32+
PATHS /usr/local/lib /usr/lib
33+
DOC "libCacheSim unified library"
34+
)
35+
36+
find_path(LIBCACHESIM_INCLUDE_DIR
37+
NAMES libCacheSim.h
38+
PATHS /usr/local/include /usr/include
39+
DOC "libCacheSim include directory"
40+
)
41+
42+
message(STATUS "libCacheSim library: ${LIBCACHESIM_LIBRARY}")
43+
message(STATUS "libCacheSim include: ${LIBCACHESIM_INCLUDE_DIR}")
1144

12-
find_package(ZSTD REQUIRED)
13-
if("${ZSTD_LIBRARIES}" STREQUAL "")
14-
message(FATAL_ERROR "ZSTD not found")
45+
if(NOT LIBCACHESIM_LIBRARY OR NOT LIBCACHESIM_INCLUDE_DIR)
46+
message(FATAL_ERROR "libCacheSim not found! Please install libCacheSim first.")
1547
endif()
1648

49+
add_executable(cacheCluster main.cpp cacheCluster.cpp consistentHash.c ketama.c md5.c)
1750

18-
################ this mode compiles the external cache replacement algorithm together with the simulator ############
19-
message(STATUS "project_source dir = " ${PROJECT_SOURCE_DIR})
20-
file(GLOB ALL_CXX_SRC ${PROJECT_SOURCE_DIR}/*.cpp)
21-
file(GLOB ALL_C_SRC ${PROJECT_SOURCE_DIR}/*.c)
2251
target_include_directories(cacheCluster PRIVATE
23-
${GLib_INCLUDE_DIRS}
24-
${CMAKE_SOURCE_DIR}/include
25-
${PROJECT_SOURCE_DIR}
26-
${PROJECT_SOURCE_DIR}/include
52+
${ZSTD_INCLUDE_DIR}
53+
${LIBCACHESIM_INCLUDE_DIR}
2754
)
2855

29-
add_executable(cacheCluster ${ALL_CXX_SRC} ${ALL_C_SRC})
30-
target_link_libraries(cacheCluster libCacheSim m ${GLib_LIBRARY} pthread dl ${ZSTD_LIBRARIES})
56+
# Add GLib compile and link flags
57+
target_compile_options(cacheCluster PRIVATE ${GLIB_CFLAGS_OTHER})
58+
target_include_directories(cacheCluster PRIVATE ${GLIB_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include/)
59+
target_link_directories(cacheCluster PRIVATE ${GLIB_LIBRARY_DIRS})
60+
61+
62+
target_link_libraries(cacheCluster
63+
${LIBCACHESIM_LIBRARY}
64+
${GLIB_LIBRARIES}
65+
${ZSTD_LIBRARY}
66+
)

example/cacheCluster/include/consistentHash.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ typedef struct {
3737
* @param weight null if all servers have the same weight
3838
* @return ring_t*
3939
*/
40-
ring_t *ch_ring_create_ring(int n_server, double *weight);
40+
ring_t *ch_ring_create_ring(int n_server, const double *weight);
4141

4242
/**
4343
* @brief retrieve the server id from the consistent hash ring
Lines changed: 56 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,67 @@
1-
cmake_minimum_required (VERSION 3.2)
2-
project (layeredCache)
1+
cmake_minimum_required (VERSION 3.10)
2+
project (cacheHierarchy)
3+
34
set(CMAKE_CXX_STANDARD 17)
4-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
5+
set(CMAKE_CXX_STANDARD_REQUIRED On)
6+
set(CMAKE_CXX_EXTENSIONS Off)
57

6-
message("****************** this example only works after libCacheSim has been installed ******************")
8+
# Find required packages
9+
find_package(PkgConfig REQUIRED)
10+
pkg_check_modules(GLIB REQUIRED glib-2.0)
711

12+
# Find ZSTD library
13+
find_library(ZSTD_LIBRARY
14+
NAMES zstd libzstd
15+
PATHS /usr/local/lib /usr/lib /opt/homebrew/lib
16+
DOC "ZSTD library"
17+
)
818

9-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/../../cmake/Modules/")
10-
find_package(GLib "2.40" REQUIRED)
11-
include_directories(${GLib_INCLUDE_DIRS})
12-
message(STATUS "glib found? " ${GLib_FOUND} ", GLIB = " ${GLib_LIBRARY} ", header = " ${GLib_INCLUDE_DIRS})
19+
find_path(ZSTD_INCLUDE_DIR
20+
NAMES zstd.h
21+
PATHS /usr/local/include /usr/include /opt/homebrew/include
22+
DOC "ZSTD include directory"
23+
)
1324

14-
find_package(ZSTD)
1525
include_directories(${ZSTD_INCLUDE_DIR})
16-
if ("${ZSTD_LIBRARIES}" STREQUAL "")
17-
message(FATAL_ERROR "zstd not found")
26+
message(STATUS "ZSTD library: ${ZSTD_LIBRARY}")
27+
message(STATUS "ZSTD include: ${ZSTD_INCLUDE_DIR}")
28+
29+
# Find libCacheSim
30+
find_library(LIBCACHESIM_LIBRARY
31+
NAMES CacheSim libCacheSim
32+
PATHS /usr/local/lib /usr/lib
33+
DOC "libCacheSim unified library"
34+
)
35+
36+
find_path(LIBCACHESIM_INCLUDE_DIR
37+
NAMES libCacheSim.h
38+
PATHS /usr/local/include /usr/include
39+
DOC "libCacheSim include directory"
40+
)
41+
42+
message(STATUS "libCacheSim library: ${LIBCACHESIM_LIBRARY}")
43+
message(STATUS "libCacheSim include: ${LIBCACHESIM_INCLUDE_DIR}")
44+
45+
if(NOT LIBCACHESIM_LIBRARY OR NOT LIBCACHESIM_INCLUDE_DIR)
46+
message(FATAL_ERROR "libCacheSim not found! Please install libCacheSim first.")
1847
endif()
1948

49+
add_executable(cacheH main.cpp myconfig.cpp simulator.cpp utils.cpp)
50+
51+
target_include_directories(cacheH PRIVATE
52+
${ZSTD_INCLUDE_DIR}
53+
${LIBCACHESIM_INCLUDE_DIR}
54+
)
2055

56+
# Add GLib compile and link flags
57+
target_compile_options(cacheH PRIVATE ${GLIB_CFLAGS_OTHER})
58+
target_include_directories(cacheH PRIVATE ${GLIB_INCLUDE_DIRS})
59+
target_link_directories(cacheH PRIVATE ${GLIB_LIBRARY_DIRS})
2160

22-
file(GLOB ALL_SRC ${PROJECT_SOURCE_DIR}/*.cpp)
23-
message(STATUS "all sources " ${ALL_SRC})
24-
add_executable(layeredCache ${ALL_SRC})
25-
target_link_libraries(layeredCache
26-
-Wl,--whole-archive
27-
libCacheSim
28-
-Wl,--no-whole-archive
29-
dl m ${GLib_LIBRARY} ${ZSTD_LIBRARIES} pthread)
3061

62+
target_link_libraries(cacheH
63+
${LIBCACHESIM_LIBRARY}
64+
m
65+
${GLIB_LIBRARIES}
66+
${ZSTD_LIBRARY}
67+
)

example/cacheHierarchy/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ int main(int argc, char* argv[]) {
1919
string cache_algo = "LRU";
2020

2121
if (argc < 2) {
22-
std::cout << "usage: ./" << argv[0] << " path/to/config/file" << std::endl;
22+
std::cout << "usage: " << argv[0] << " path/to/config/file" << std::endl;
2323
return 0;
2424
}
2525

example/cacheHierarchy/simulator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ double Simulator::gen_miss_trace(string algo, uint64_t cache_size,
2121
.obj_size_field = 3,
2222
.next_access_vtime_field = 4};
2323
// see the cacheSimulator example for using csv trace
24-
reader_init_params.binary_fmt_str = "<IQIQ";
24+
reader_init_params.binary_fmt_str = (char *)"<IQIQ";
2525
reader_t *reader =
2626
open_trace(trace_path.c_str(), BIN_TRACE, &reader_init_params);
2727
common_cache_params_t cc_params = {.cache_size = cache_size};
@@ -54,7 +54,7 @@ void Simulator::output_mrc(string &algo, vector<uint64_t> cache_sizes,
5454
char alg[] = "LRU";
5555
reader_init_param_t reader_init_params = {
5656
.time_field = 1, .obj_id_field = 2, .obj_size_field = 3};
57-
reader_init_params.binary_fmt_str = "<III";
57+
reader_init_params.binary_fmt_str = (char *)"<III";
5858
reader_t *reader =
5959
open_trace(trace_path.c_str(), BIN_TRACE, &reader_init_params);
6060

Lines changed: 53 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,62 @@
1-
cmake_minimum_required (VERSION 3.2)
1+
cmake_minimum_required (VERSION 3.10)
22
project (cacheSimulator)
3-
# set(CMAKE_BUILD_TYPE Debug)
43

5-
message("****************** this example only works after libCacheSim has been installed ******************")
4+
# Find required packages
5+
find_package(PkgConfig REQUIRED)
6+
pkg_check_modules(GLIB REQUIRED glib-2.0)
67

7-
find_library(libCacheSim libCacheSim)
8-
find_path(libCacheSimInclude libCacheSim)
9-
message(STATUS "libCacheSim found? ${libCacheSim} ${libCacheSimInclude}")
10-
include_directories(${libCacheSimInclude})
8+
# Find ZSTD library
9+
find_library(ZSTD_LIBRARY
10+
NAMES zstd libzstd
11+
PATHS /usr/local/lib /usr/lib /opt/homebrew/lib
12+
DOC "ZSTD library"
13+
)
1114

12-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/../../cmake/Modules/")
13-
find_package(GLib "2.40" REQUIRED)
14-
include_directories(${GLib_INCLUDE_DIRS})
15-
message(STATUS "glib found? ${GLib_FOUND}, lib = ${GLib_LIBRARY}, header = ${GLib_INCLUDE_DIRS}")
15+
find_path(ZSTD_INCLUDE_DIR
16+
NAMES zstd.h
17+
PATHS /usr/local/include /usr/include /opt/homebrew/include
18+
DOC "ZSTD include directory"
19+
)
1620

17-
find_package(ZSTD)
18-
# https://stackoverflow.com/questions/61377055/cannot-find-gflags-gflags-h-while-building-library-osx/61379123#61379123
1921
include_directories(${ZSTD_INCLUDE_DIR})
20-
if ("${ZSTD_LIBRARIES}" STREQUAL "")
21-
message(FATAL_ERROR "zstd not found")
22-
endif()
22+
message(STATUS "ZSTD library: ${ZSTD_LIBRARY}")
23+
message(STATUS "ZSTD include: ${ZSTD_INCLUDE_DIR}")
24+
25+
# Find libCacheSim
26+
find_library(LIBCACHESIM_LIBRARY
27+
NAMES CacheSim libCacheSim
28+
PATHS /usr/local/lib /usr/lib
29+
DOC "libCacheSim unified library"
30+
)
31+
32+
find_path(LIBCACHESIM_INCLUDE_DIR
33+
NAMES libCacheSim.h
34+
PATHS /usr/local/include /usr/include
35+
DOC "libCacheSim include directory"
36+
)
37+
38+
message(STATUS "libCacheSim library: ${LIBCACHESIM_LIBRARY}")
39+
message(STATUS "libCacheSim include: ${LIBCACHESIM_INCLUDE_DIR}")
2340

41+
if(NOT LIBCACHESIM_LIBRARY OR NOT LIBCACHESIM_INCLUDE_DIR)
42+
message(FATAL_ERROR "libCacheSim not found! Please install libCacheSim first.")
43+
endif()
2444

2545
add_executable(cacheSimulator main.c)
26-
target_link_libraries(cacheSimulator libCacheSim m ${GLib_LIBRARY} ${ZSTD_LIBRARIES})
46+
47+
target_include_directories(cacheSimulator PRIVATE
48+
${ZSTD_INCLUDE_DIR}
49+
${LIBCACHESIM_INCLUDE_DIR}
50+
)
51+
52+
# Add GLib compile and link flags
53+
target_compile_options(cacheSimulator PRIVATE ${GLIB_CFLAGS_OTHER})
54+
target_include_directories(cacheSimulator PRIVATE ${GLIB_INCLUDE_DIRS})
55+
target_link_directories(cacheSimulator PRIVATE ${GLIB_LIBRARY_DIRS})
56+
57+
target_link_libraries(cacheSimulator
58+
${LIBCACHESIM_LIBRARY}
59+
m
60+
${GLIB_LIBRARIES}
61+
${ZSTD_LIBRARY}
62+
)
Lines changed: 58 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,67 @@
1-
cmake_minimum_required (VERSION 3.2)
2-
project (cacheSimulatorMultiSize)
3-
set(CMAKE_CXX_STANDARD 17)
4-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1+
cmake_minimum_required (VERSION 3.10)
2+
project (cacheSimulatorConcurrent)
53

4+
set(CMAKE_CXX_STANDARD 17)
5+
set(CMAKE_CXX_STANDARD_REQUIRED On)
6+
set(CMAKE_CXX_EXTENSIONS Off)
67

7-
find_library(libCacheSim libCacheSim)
8-
find_path(libCacheSimInclude libCacheSim)
9-
include_directories(${libCacheSimInclude})
10-
message(STATUS "libCacheSim found? ${libCacheSim}, ${libCacheSimInclude}")
8+
# Find required packages
9+
find_package(PkgConfig REQUIRED)
10+
pkg_check_modules(GLIB REQUIRED glib-2.0)
1111

12+
# Find ZSTD library
13+
find_library(ZSTD_LIBRARY
14+
NAMES zstd libzstd
15+
PATHS /usr/local/lib /usr/lib /opt/homebrew/lib
16+
DOC "ZSTD library"
17+
)
1218

13-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/../../cmake/Modules/")
14-
find_package(GLib "2.40" REQUIRED)
15-
include_directories(${GLib_INCLUDE_DIRS})
16-
message(STATUS "glib found? ${GLib_FOUND}, lib = ${GLib_LIBRARY}, header = ${GLib_INCLUDE_DIRS}")
19+
find_path(ZSTD_INCLUDE_DIR
20+
NAMES zstd.h
21+
PATHS /usr/local/include /usr/include /opt/homebrew/include
22+
DOC "ZSTD include directory"
23+
)
1724

18-
find_package(ZSTD)
19-
# https://stackoverflow.com/questions/61377055/cannot-find-gflags-gflags-h-while-building-library-osx/61379123#61379123
2025
include_directories(${ZSTD_INCLUDE_DIR})
21-
if ("${ZSTD_LIBRARIES}" STREQUAL "")
22-
message(FATAL_ERROR "zstd not found")
26+
message(STATUS "ZSTD library: ${ZSTD_LIBRARY}")
27+
message(STATUS "ZSTD include: ${ZSTD_INCLUDE_DIR}")
28+
29+
# Find libCacheSim
30+
find_library(LIBCACHESIM_LIBRARY
31+
NAMES CacheSim libCacheSim
32+
PATHS /usr/local/lib /usr/lib
33+
DOC "libCacheSim unified library"
34+
)
35+
36+
find_path(LIBCACHESIM_INCLUDE_DIR
37+
NAMES libCacheSim.h
38+
PATHS /usr/local/include /usr/include
39+
DOC "libCacheSim include directory"
40+
)
41+
42+
message(STATUS "libCacheSim library: ${LIBCACHESIM_LIBRARY}")
43+
message(STATUS "libCacheSim include: ${LIBCACHESIM_INCLUDE_DIR}")
44+
45+
if(NOT LIBCACHESIM_LIBRARY OR NOT LIBCACHESIM_INCLUDE_DIR)
46+
message(FATAL_ERROR "libCacheSim not found! Please install libCacheSim first.")
2347
endif()
2448

25-
add_executable(cacheSimulatorMultiSize main.cpp)
26-
target_link_libraries(cacheSimulatorMultiSize libCacheSim m ${GLib_LIBRARY} ${ZSTD_LIBRARIES})
49+
add_executable(cacheSimulatorConcurrent main.cpp)
50+
51+
target_include_directories(cacheSimulatorConcurrent PRIVATE
52+
${ZSTD_INCLUDE_DIR}
53+
${LIBCACHESIM_INCLUDE_DIR}
54+
)
55+
56+
# Add GLib compile and link flags
57+
target_compile_options(cacheSimulatorConcurrent PRIVATE ${GLIB_CFLAGS_OTHER})
58+
target_include_directories(cacheSimulatorConcurrent PRIVATE ${GLIB_INCLUDE_DIRS})
59+
target_link_directories(cacheSimulatorConcurrent PRIVATE ${GLIB_LIBRARY_DIRS})
60+
2761

62+
target_link_libraries(cacheSimulatorConcurrent
63+
${LIBCACHESIM_LIBRARY}
64+
m
65+
${GLIB_LIBRARIES}
66+
${ZSTD_LIBRARY}
67+
)

example/cacheSimulatorConcurrent/main.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ void run_one_cache_multiple_sizes(cache_t *cache, reader_t *reader) {
2525
" cache name cache size num_miss num_req"
2626
" miss ratio byte miss ratio\n");
2727
for (int i = 0; i < NUM_SIZES; i++) {
28-
printf("%16s %16lu %16lu %16lu %16.4lf %16.4lf\n", result[i].cache_name,
29-
result[i].cache_size, result[i].n_miss, result[i].n_req,
28+
printf("%16s %16lld %16lld %16lld %16.4lf %16.4lf\n", result[i].cache_name,
29+
(long long)result[i].cache_size, (long long)result[i].n_miss,
30+
(long long)result[i].n_req,
3031
(double)(result[i].n_miss) / (double)result[i].n_req,
3132
(double)(result[i].n_miss_byte / (double)result[i].n_req_byte));
3233
}
@@ -61,8 +62,9 @@ void run_multiple_caches(reader_t *reader) {
6162
" cache name cache size num_miss num_req"
6263
" miss ratio byte miss ratio\n");
6364
for (int i = 0; i < NUM_SIZES; i++) {
64-
printf("%16s %16lu %16lu %16lu %16.4lf %16.4lf\n", result[i].cache_name,
65-
result[i].cache_size, result[i].n_miss, result[i].n_req,
65+
printf("%16s %16lld %16lld %16lld %16.4lf %16.4lf\n", result[i].cache_name,
66+
(long long)result[i].cache_size, (long long)result[i].n_miss,
67+
(long long)result[i].n_req,
6668
(double)(result[i].n_miss) / (double)result[i].n_req,
6769
(double)(result[i].n_miss_byte / (double)result[i].n_req_byte));
6870
}

0 commit comments

Comments
 (0)