Skip to content

Commit

Permalink
basic mem usage functions
Browse files Browse the repository at this point in the history
  • Loading branch information
DmitriyMusatkin committed Oct 20, 2023
1 parent f705c61 commit 257969b
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 1 deletion.
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,8 @@ if (WIN32)
endif ()

list(APPEND PLATFORM_DEFINES WINDOWS_KERNEL_LIB=${WINDOWS_KERNEL_LIB})
list(APPEND PLATFORM_LIBS BCrypt ${WINDOWS_KERNEL_LIB} Ws2_32 Shlwapi)
list(APPEND PLATFORM_DEFINES PSAPI_VERSION=1)
list(APPEND PLATFORM_LIBS BCrypt ${WINDOWS_KERNEL_LIB} Ws2_32 Shlwapi Psapi)
else ()
file(GLOB AWS_COMMON_OS_HEADERS
"include/aws/common/posix/*"
Expand Down
26 changes: 26 additions & 0 deletions include/aws/common/system_resource_util.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#ifndef AWS_COMMON_SYSTEM_RESOURCE_UTIL_H
#define AWS_COMMON_SYSTEM_RESOURCE_UTIL_H

/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#include <aws/common/common.h>

AWS_PUSH_SANE_WARNING_LEVEL

AWS_EXTERN_C_BEGIN

struct aws_resource_usage {
size_t maxrss;

size_t _reserved[8];
};

AWS_COMMON_API int aws_resource_usage_for_current_process(struct aws_resource_usage *resource_usage);


AWS_EXTERN_C_END
AWS_POP_SANE_WARNING_LEVEL

#endif /* AWS_COMMON_SYSTEM_RESOURCE_UTIL_H */
25 changes: 25 additions & 0 deletions source/posix/system_resource_utils.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/

#include <aws/common/system_resource_util.h>

#include <sys/resource.h>

int aws_resource_usage_for_current_process(struct aws_resource_usage *ru) {
AWS_PRECONDITION(ru);

struct rusage usage;

if (getrusage(RUSAGE_SELF, &usage)) {
return aws_raise_error(AWS_ERROR_SYS_CALL_FAILURE);
}

#if defined(AWS_OS_APPLE)
ru->maxrss = usage.ru_maxrss / 1024;
#else
ru->maxrss = usage.ru_maxrss;
#endif
return AWS_OP_SUCCESS;
}
27 changes: 27 additions & 0 deletions source/windows/system_resource_utils.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/

#include <aws/common/system_resource_util.h>

#include <windows.h>
#include <psapi.h>

int aws_resource_usage_for_current_process(struct aws_resource_usage *resource_usage) {
AWS_PRECONDITION(resource_usage);

HANDLE hProcess = GetCurrentProcess();;
PROCESS_MEMORY_COUNTERS pmc;

BOOL ret = GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc));
CloseHandle( hProcess );

if (!ret) {
return aws_raise_error(AWS_ERROR_SYS_CALL_FAILURE);
}

ru->maxrss = pmc.PeakWorkingSetSize;

return AWS_OP_SUCCESS;
}
2 changes: 2 additions & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,8 @@ add_test_case(ring_buffer_acquire_up_to_multi_threaded_test)
add_test_case(string_to_log_level_success_test)
add_test_case(string_to_log_level_failure_test)

add_test_case(test_resource_usage_maxrss)

if(NOT ANDROID)
add_test_case(test_logging_filter_at_AWS_LL_NONE_s_logf_all_levels)
add_test_case(test_logging_filter_at_AWS_LL_FATAL_s_logf_all_levels)
Expand Down
22 changes: 22 additions & 0 deletions tests/system_resource_util_test.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/

#include <aws/common/system_resource_util.h>

#include <aws/testing/aws_test_harness.h>

static int s_test_resource_usage_maxrss(struct aws_allocator *allocator, void *ctx) {
(void)ctx;

struct aws_resource_usage ru;
AWS_ZERO_STRUCT(ru);
ASSERT_SUCCESS(aws_resource_usage_for_current_process(&ru));

ASSERT_TRUE(ru.maxrss > 0);

return 0;
}

AWS_TEST_CASE(test_resource_usage_maxrss, s_test_resource_usage_maxrss)

0 comments on commit 257969b

Please sign in to comment.