Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

INTERNAL: Remove the check for clock_gettime function #789

Merged
merged 1 commit into from
Nov 11, 2024

Conversation

ing-eoking
Copy link
Collaborator

๐Ÿ”— Related Issue

  • jam2in/arcus-works#590

โŒจ๏ธ What I did

  • ๊ธฐ์กด ์ฝ”๋“œ์—์„œ๋Š” clock_gettime ์‚ฌ์šฉ์„ ์œ„ํ•ด librt์—์„œ ํ™•์ธ์„ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ, ๋งํ‚น ์˜ต์…˜์ธ -lrt๋Š” ๋”ฐ๋กœ ์ง€์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • ํ™•์ธ ํ›„ -lrt์˜ต์…˜์„ ์ฃผ๋„๋ก ์ถ”๊ฐ€ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

@ing-eoking ing-eoking marked this pull request as draft October 23, 2024 01:02
@ing-eoking ing-eoking marked this pull request as ready for review October 23, 2024 01:43
@jhpark816 jhpark816 removed their request for review October 23, 2024 02:07
configure.ac Outdated
@@ -23,8 +23,10 @@ dnl if clock_gettime is available, define USE_CLOCK_GETTIME 1
dnl else define USE_GETTIMEOFDAY 1
dnl **********************************************************************
AC_CHECK_LIB(rt, clock_gettime,
CLOCK_GETTIME_LIBS="-lrt"
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AC_CHECK_LIB ($LIB, $FUNC, [$ACTION1], [$ACTION2])

$LIB์—์„œ $FUNC๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋งคํฌ๋กœ์ž…๋‹ˆ๋‹ค.

  • ๋งŒ์•ฝ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋ฉด $ACTION1์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด $ACTION2๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ PR์—์„œ $ACTION1์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

CLOCK_GETTIME_LIBS="-lrt"
AC_DEFINE(USE_CLOCK_GETTIME, 1, [Defined if clock_gettime is available in libc])

์ด ์ฝ”๋“œ๋Š” CLOCK_GETTIME_LIBS ๋ณ€์ˆ˜์— "-lrt" ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ณ ,
USE_CLOCK_GETTIME์ด๋ผ๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ๋ฅผ config.h์— ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
EE ์„œ๋ฒ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด clock_gettime() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ์กด์— --enable-zk-integration ์—†์ด ์ปดํŒŒ์ผํ•œ ๊ฒฝ์šฐ์— ํ•ด๋‹น ์ฝ”๋“œ๋“ค์ด ์ •์ƒ ๋™์ž‘ํ•˜๋‚˜์š”?
ํ˜น์€ ZK๊ฐ€ ์—†์œผ๋ฉด ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ผ์„œ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๋˜ ๊ฒƒ์ธ๊ฐ€์š”?

Copy link
Collaborator Author

@ing-eoking ing-eoking Oct 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

zk ๋งํ‚น ์—ฌ๋ถ€ ๊ด€๊ณ„์—†์ด clock_gettime ๋˜๋Š” gettimeofday ๋ฅผ ์“ฐ๋„๋ก ๋˜๊ฒŒ๋” ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ ์•„๋ž˜ ์ฒ˜๋Ÿผ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค๋ฉด ๋งž๊ฒŒ ๊ตฌํ˜„๋œ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

#ifdef USE_CLOCK_GETTIME
  clock_gettime(...);
#else
  gettimeofday(...);
#endif

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clock_gettime() ๋งค๋‰ด์–ผ์„ ๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด
glibc 2.7 ์ด์ „ ๋ฒ„์ „์ด๋ฉด librt์™€ linkingํ•˜๋ผ๊ณ  ๋˜์–ด ์žˆ๋Š” ๋ฐ์š”.
glibc 2.7 ๋ถ€ํ„ฐ๋Š” glibc ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ clock_gettime() ์ง€์›ํ•˜๋Š”๊ฐ€์š”?

#include <time.h>

int clock_gettime(clockid_t clk_id, struct timespec *tp);
//Link with -lrt (only for glibc version before 2.17)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ฐธ๊ณ ๋กœ, USE_CLOCK_GETTIME ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋Š” EE ๋ฒ„์ „์—๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ , USE_GETTIMEOFDAY๋Š” ์•„์˜ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” define ์ž…๋‹ˆ๋‹ค.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ง€๊ธˆ ์ˆ˜์ •ํ•˜๋ ค๋Š” ๋ฌธ์ œ๊ฐ€ clock_gettime() ์œ ๋ฌด์™€ ๊ด€๋ จ์žˆ๋Š” ๊ฒƒ์ด ๋งž๋‚˜์š”?

์ •ํ™•ํ•˜๊ฒŒ๋Š” aio_XXX ๋งŒ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ๋งŒ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

rt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ œ๊ณตํ•˜๋Š” API๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ฐ๋Š” ์ƒํ™ฉ์—์„œ -lrt ์˜ต์…˜์ด ์—†์„ ์‹œ
๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์•„๋ž˜ ์ƒํ™ฉ์—์„œ -lrt ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ๋นŒ๋“œํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‚˜์š”?

libc ์ตœ์‹  ๋ฒ„์ „ ์‚ฌ์šฉํ•˜์—ฌ -lrt ์—†์ด๋„ clock_gettime() ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ

๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค.
๋ฐ˜๋Œ€์˜ libc ๊ตฌ ๋ฒ„์ „์„ ์‚ฌ์šฉ ์ค‘์ธ ์ƒํ™ฉ์—์„œ rt์—์„œ clock_gettime์„ ์ฐพ์€ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

clock_gettime() ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•˜์—ฌ USE_GETTIMEOFDAY ์„ค์ •๋˜๋Š” ๊ฒฝ์šฐ

๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค.

aio_xxx() ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์กฐ๊ฑด๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฌด์กฐ๊ฑด -lrt ํฌํ•จํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ์ง€?

๋ฌด์กฐ๊ฑด -lrt ์˜ต์…˜์„ ์ฃผ๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค. rt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Copy link
Collaborator Author

@ing-eoking ing-eoking Oct 30, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ARCUS ์บ์‹œ ์„œ๋ฒ„๋Š” ๊ณต์‹์ ์œผ๋กœ CentOS๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
MacOS ๊ด€๋ จ ์ปดํŒŒ์ผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋˜ ์ด์œ ๋Š” ๋‹จ์ง€ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํŽธ์˜์„ฑ์„ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์ด๋Š” -librt๋ฅผ aio_xxx() ํ•จ์ˆ˜๊ฐ€ ์—†์–ด๋„ ํฌํ•จํ•˜๋Š” ์ด์œ ๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ณต์‹์œผ๋กœ ์ง€์›ํ•˜๋Š” OS์— ๋Œ€ํ•˜์—ฌ ํฌ๊ฒŒ ๊ธฐ์ค€์œผ๋กœ ์‚ผ์€ ์ ์€ ์—†์–ด์„œ ์ด ๋ถ€๋ถ„์€ ์ข€ ๋” ๊ณ ๋ คํ•ด๋ณด๊ธด ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ์„  ๋ง์”€์— ๋Œ€ํ•œ ์ €์˜ ์˜๊ฒฌ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

MacOS์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋‹ˆ librt ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด aio_xxx๋ฅผ ๋„ฃ์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ชจ๋“  ์‹œ์Šคํ…œ์—์„œ ํ•ด๋‹น๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์–ด์„œ librt ๊ฒ€์‚ฌ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์€ ์ด์œ  ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ, ๊ณต์‹์ ์œผ๋กœ CentOS์™€ Ubuntu์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ช…์‹œ๋œ ๊ฒƒ์€ ๋งž์ง€๋งŒ, ๊ทธ ์‹œ์Šคํ…œ๋งŒ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ์ด ์ง„ํ–‰๋œ ๊ฒƒ์€ ์•„๋‹Œ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ CentOS ์ง€์›๋งŒ์„ ๋ชฉํ‘œ๋กœ ํ–ˆ๋‹ค๋ฉด, ๋‹ค๋ฅธ ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  memcached ์ฝ”๋“œ๊ฐ€ ๊ตฌํ˜„๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Š” ๋ณธ PR์˜ ์˜๋„์™€๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ์ด์Šˆ๊ฐ€ ํ•ด๊ฒฐ๋  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์˜๋ฏธ์ƒ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ด์Šˆ๋Š” rt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งํ‚น๋˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•ด aio_xxx์™€ clock_gettime ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Linux Foundation์—์„œ ํ™•์ธํ•œ ๋ฐ”์— ๋”ฐ๋ฅด๋ฉด, rt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” clock_gettime์ด ํฌํ•จ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฒดํฌํ•œ ํ›„ -lrt๋ฅผ ์ถ”๊ฐ€ํ•˜๋„๋ก ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. (์ถœ์ฒ˜: Linux Standard Base)

๋˜ํ•œ ์ œ๊ฐ€ ํ™•์ธํ•œ ๋ฒ”์œ„์—์„œ๋Š” rt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— aio_xxx๋Š” ์กด์žฌํ•˜์ง€๋งŒ clock_gettime์ด ์—†๋Š” ๊ฒฝ์šฐ๋Š” ์—†์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ clock_gettime์„ ์ฒดํฌ ๊ธฐ์ค€์œผ๋กœ ์‚ผ๊ฒŒ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ aio_xxx๋งŒ rt์— ์กด์žฌํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์กด์žฌํ•œ๋‹ค๋ฉด, ๊ทธ ๊ฒฝ์šฐ์—๋„ ๊ทผ๋ณธ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ๋˜์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ, EE ์บ์‹œ ์„œ๋ฒ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ ์ด๋ฏธ ๊ทธ๋ ‡๊ฒŒ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๋‘๋ฒˆ์งธ ์ด์œ ๋„ ์ ํ•ฉํ•˜์ง€ ์•Š์€ ์ด์œ ์ž…๋‹ˆ๋‹ค.

์ด ๋ถ€๋ถ„์€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋„ค์š”. ์กฐ๊ธˆ ๋” ์„ค๋ช…ํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ชจ๋“  ์‹œ์Šคํ…œ์—์„œ ํ•ด๋‹น๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์–ด์„œ librt ๊ฒ€์‚ฌ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

MacOS๋Š” libc์— ํฌํ•จ๋˜์–ด ์žˆ์–ด์„œ aio_suspend() ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
librt๋ฅผ ํฌํ•จ ๊ธฐ์ค€์„ aio_xxx() ํ•จ์ˆ˜๋กœ ๋ฐ”๊ฟ”๋„ MacOS์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

https://man7.org/linux/man-pages/man3/aio_suspend.3.html
๋ฆฌ๋ˆ…์Šค ๋ฉ”๋‰ด์–ผ ํŽ˜์ด์ง€์—์„œ aio_xxx() ํ•จ์ˆ˜๋Š” librt์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
librt๋ฅผ ํฌํ•จ ๊ธฐ์ค€์„ aio_xxx() ํ•จ์ˆ˜๋กœ ๋ฐ”๊ฟ”๋„ CentOS๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ด์Šˆ๋Š” rt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งํ‚น๋˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ๋กœ์ง์—์„œ librt ๋‚ด์—์„œ clock_gettime์„ ํƒ์ƒ‰ํ•˜์—ฌ ์กด์žฌ๋ฅผ ํ™•์ธํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  -lrt ์˜ต์…˜์„ ์•„์˜ˆ ์ฃผ์ง€ ์•Š๊ณ  ์žˆ์—ˆ๋˜ ๋ฌธ์ œ์™€ aio_xxx() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ด์Šˆ๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
๋‘ ์ด์Šˆ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ณตํ†ต์ ์œผ๋กœ librt๋ฅผ ๋งํ‚นํ•œ๋‹ค๋Š” ๊ฒƒ์ด์ง€๋งŒ, aio_xxx() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด clock_gettime() ํ•จ์ˆ˜์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ์ƒ ๋ถ€์ ํ•ฉํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ถ€๋ถ„์€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋„ค์š”. ์กฐ๊ธˆ ๋” ์„ค๋ช…ํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

EE ์ฝ”๋“œ๋Š” ์ด๋ฏธ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‚˜์š”?

#ifdef USE_CLOCK_GETTIME
  clock_gettime(...);
#else
  gettimeofday(...);
#endif

Copy link
Collaborator Author

@ing-eoking ing-eoking Oct 30, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://man7.org/linux/man-pages/man3/aio_suspend.3.html
๋ฆฌ๋ˆ…์Šค ๋ฉ”๋‰ด์–ผ ํŽ˜์ด์ง€์—์„œ aio_xxx() ํ•จ์ˆ˜๋Š” librt์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
librt๋ฅผ ํฌํ•จ ๊ธฐ์ค€์„ aio_xxx() ํ•จ์ˆ˜๋กœ ๋ฐ”๊ฟ”๋„ CentOS๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฃผ์‹  ๋งํฌ๋ฅผ ์‚ดํŽด๋ณธ ๊ฒฐ๊ณผ, clock_gettime๊ณผ aio_xxx ํ•จ์ˆ˜๊ฐ€ ๊ฐ™์€ ์‹œ๊ธฐ์— ์ถ”๊ฐ€๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ
clock_gettime๊ณผ aio_xxx๊ฐ€ ํ•ญ์ƒ librt์— ์กด์žฌํ•จ์ด ๋ณด์žฅ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

EE ์ฝ”๋“œ๋Š” ์ด๋ฏธ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‚˜์š”?

์ง€๊ธˆ ์ˆ˜์ •ํ•˜๊ณ  ์žˆ๋Š” ๊ธฐ์ค€์œผ๋กœ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑฐ๋ผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ์กด ์ฝ”๋“œ๋กœ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑฐ๋ผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์—๋Š” ๋‚ฎ์€ ๋ฒ„์ „์˜ Libc ์‚ฌ์šฉ์‹œ -lrt ์˜ต์…˜์„ ์ฃผ์ง€ ์•Š์•„
rt๊ฐ€ ๋งํ‚น๋˜์ง€ ์•Š๊ธฐ์— zk๊ฐ€ ๋งํ‚นํ•˜์ง€ ์•Š๊ณ  ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค๋ฉด ๋‚ฎ์€ ๋ฒ„์ „์˜ libc์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ธฐ์กด ์ฝ”๋“œ๋กœ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑฐ๋ผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์—๋Š” ๋‚ฎ์€ ๋ฒ„์ „์˜ Libc ์‚ฌ์šฉ์‹œ -lrt ์˜ต์…˜์„ ์ฃผ์ง€ ์•Š์•„
rt๊ฐ€ ๋งํ‚น๋˜์ง€ ์•Š๊ธฐ์— zk๊ฐ€ ๋งํ‚นํ•˜์ง€ ์•Š๊ณ  ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค๋ฉด ๋‚ฎ์€ ๋ฒ„์ „์˜ libc์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์งˆ๋ฌธํ–ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ์กด์— --enable-zk-integration ์—†์ด ์ปดํŒŒ์ผํ•œ ๊ฒฝ์šฐ์— ํ•ด๋‹น ์ฝ”๋“œ๋“ค์ด ์ •์ƒ ๋™์ž‘ํ•˜๋‚˜์š”?
ํ˜น์€ ZK๊ฐ€ ์—†์œผ๋ฉด ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ผ์„œ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๋˜ ๊ฒƒ์ธ๊ฐ€์š”?

์ •๋ง๋กœ libc ๋ฒ„์ „๋„ ๋‚ฎ๊ณ  librt๊ฐ€ ๋งํ‚น๋˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ฝ”๋“œ์ž„์„ ํ™•์ธํ–ˆ๋‚˜์š”?

Makefile.am Outdated
@@ -95,7 +95,7 @@ memcached_SOURCES = \
memcached_LDFLAGS =-R '$(libdir)'
memcached_CFLAGS = @PROFILER_FLAGS@ ${AM_CFLAGS}
memcached_DEPENDENCIES = libmcd_util.la
memcached_LDADD = @PROFILER_LDFLAGS@ libmcd_util.la -levent $(APPLICATION_LIBS)
memcached_LDADD = @CLOCK_GETTIME_LIBS@ @PROFILER_LDFLAGS@ libmcd_util.la -levent $(APPLICATION_LIBS)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@{๋ณ€์ˆ˜๋ช…}@

configure.ac์—์„œ ์ •์˜๋œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

configure.ac Outdated
AC_DEFINE(USE_CLOCK_GETTIME, 1, [Defined if clock_gettime is available in libc]),
AC_DEFINE(USE_GETTIMEOFDAY, 1, [Defined if clock_gettime is not available in libc]))
AC_SUBST(CLOCK_GETTIME_LIBS)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AC_SUBST($VAR)

configure.ac ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด CLOCK_GETTIME_LIBS๋ฅผ Makefile์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

@ing-eoking
Copy link
Collaborator Author

ing-eoking commented Oct 30, 2024

@jhpark816 @namsic

clock_gettime, aio_suspend๋ฅผ ๋‘˜ ๋‹ค ํ™•์ธํ•˜๊ณ  ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด ๋งํ‚นํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์˜๊ฒฌ ์žˆ์„ ์‹œ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@namsic
Copy link
Collaborator

namsic commented Oct 30, 2024

clock_gettime, aio_suspend๋ฅผ ๋‘˜ ๋‹ค ํ™•์ธํ•˜๊ณ  ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด ๋งํ‚นํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์•„๋ž˜ ์ƒํ™ฉ์—์„œ -lrt ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ๋นŒ๋“œํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‚˜์š”?
    => ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ฌด์กฐ๊ฑด -lrt ์˜ต์…˜์„ ์ฃผ๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค. rt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • aio_xxx ํ•จ์ˆ˜๊ฐ€ ๋ชจ๋“  ์‹œ์Šคํ…œ์—์„œ librt์— ํฌํ•จ๋œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. (Squall/Gust ์—”์ง„ ๋ฌธ์ œ๋Š” CentOS 7์—์„œ๋งŒ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ, ์ œ MacOS์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.)

ํ•จ์ˆ˜ ์กด์žฌ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋งํฌํ•œ๋‹ค๋Š” ๊ฒƒ์€, ๋‘ ํ•จ์ˆ˜๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” -lrt ์„ค์ •ํ•˜์ง€ ์•Š๊ณ ๋„ aio_xxx() ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์ง€์š”?
(์˜ˆ๋ฅผ ๋“ค์–ด, MacOS์—์„œ๋Š” librt๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ์–ด๋””์„ ๊ฐ€ aio_xxx()๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ ํ˜ธ์ถœํ•˜์—ฌ ๋นŒ๋“œ ์„ฑ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ด์ง€์š”?)
์•„๋‹ˆ๋ฉด, librt ์—†๋Š” ํ™˜๊ฒฝ์—์„œ ๋นŒ๋“œํ•˜๋ฉด aio_xxx() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ตฌํ˜„์œผ๋กœ ๋นŒ๋“œ๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์ธ๊ฐ€์š”?

@jhpark816
Copy link
Collaborator

@ing-eoking
์˜๊ฒฌ์ž…๋‹ˆ๋‹ค.

  • clock_gettime ํ•จ์ˆ˜
    • ํ˜„์žฌ EE ๋ฒ„์ „์—์„œ๋งŒ ์‚ฌ์šฉ๋จ.
    • configure ๊ฒ€์‚ฌ๊ฐ€ CE ๋ฒ„์ „์—์„œ๋Š” ํ•„์š” ์—†๊ณ  EE ๋ฒ„์ „์—์„œ๋งŒ ํ•„์š”.
    • ๋”ฐ๋ผ์„œ ์กฐ๊ฑด์ ์œผ๋กœ librt์™€ ๋งํ‚น ํ•„์š”
    • ์ฐธ๊ณ , replication & migraiton ๋กœ์ง์—์„œ๋งŒ clock_gettime ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๊ฒƒ ๊ฐ™์Œ.
  • aio_suspend ํ•จ์ˆ˜
    • ํ˜„์žฌ EE ๋ฒ„์ „์—์„œ๋งŒ ์‚ฌ์šฉ๋จ.
    • ๋ฌด์กฐ๊ฑด librt ํ•„์š”. (MacOS์—์„œ๋Š” ๋‹ค๋ฅธ๊ฐ€์š”?)
    • configure ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š” ์—†๊ณ , ๋ฌด์กฐ๊ฑด librt์™€ ๋งํ‚น ์„ค์ •
    • squall or gust ์—”์ง„์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ๊ทธ ์—”์ง„์˜ library ๋นŒ๋“œ ์‹œ์— ๋งํ‚น๋˜๋ฉด ์ข‹๊ฒ ์Œ.

@ing-eoking
Copy link
Collaborator Author

ing-eoking commented Oct 31, 2024

@namsic

ํ•จ์ˆ˜ ์กด์žฌ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋งํฌํ•œ๋‹ค๋Š” ๊ฒƒ์€, ๋‘ ํ•จ์ˆ˜๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” -lrt ์„ค์ •ํ•˜์ง€ ์•Š๊ณ ๋„ aio_xxx() ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์ง€์š”?

๋„ค. ๋งž์Šต๋‹ˆ๋‹ค.

@jhpark816

๊ทธ๋ ‡๋‹ค๋ฉด, CE ๋ฒ„์ „์ด ์•„๋‹Œ EE ๋ฒ„์ „๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋ ๊นŒ์š”?

๋ฌด์กฐ๊ฑด librt ํ•„์š”. (MacOS์—์„œ๋Š” ๋‹ค๋ฅธ๊ฐ€์š”?)

๋„ค. MacOS์—์„œ๋Š” -lrt๋ฅผ ์ฃผ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

@jhpark816
Copy link
Collaborator

jhpark816 commented Oct 31, 2024

๊ทธ๋ ‡๋‹ค๋ฉด, CE ๋ฒ„์ „์ด ์•„๋‹Œ EE ๋ฒ„์ „๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋ ๊นŒ์š”?

์ˆ˜์ •์€ ๋‘˜ ๋‹ค ํ•„์š”ํ•˜์ง€ ์•Š๋‚˜์š”?

  • CE ๋ฒ„์ „์—์„œ๋Š” ํ•ด๋‹น configure ์‚ฌํ•ญ์„ ์ œ๊ฑฐ
  • EE ๋ฒ„์ „์—์„œ๋Š” ํ•ด๋‹น configure ์‚ฌํ•ญ์„ ์ ํ•ฉํ•˜๊ฒŒ ์ถ”๊ฐ€

๋„ค. MacOS์—์„œ๋Š” -lrt๋ฅผ ์ฃผ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

MacOS์—์„œ๋Š” aio_xxxx() ํ•จ์ˆ˜๋“ค์ด ์–ด๋–ค library ํ†ตํ•ด ์ œ๊ณต๋˜๋‚˜์š”?
๊ทธ library๋Š” linking ๋œ ์ƒํƒœ์ธ๊ฐ€์š”?

@jhpark816
Copy link
Collaborator

@ing-eoking
์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ•œ๋‹ค๋Š” ์‚ฌํ•ญ์„ ๋จผ์ € ์ •๋ฆฌํ•ด ์ฃผ๊ณ , PR์„ ์ˆ˜์ •ํ•ด ์ฃผ์„ธ์š”.

@uhm0311
Copy link
Collaborator

uhm0311 commented Oct 31, 2024

MacOS์—์„œ๋Š” aio_xxxx() ํ•จ์ˆ˜๋“ค์ด ์–ด๋–ค library ํ†ตํ•ด ์ œ๊ณต๋˜๋‚˜์š”?
๊ทธ library๋Š” linking ๋œ ์ƒํƒœ์ธ๊ฐ€์š”?

libc๋ฅผ ํ†ตํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/aio_suspend.2.html

@ing-eoking
Copy link
Collaborator Author

@jhpark816

์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ•œ๋‹ค๋Š” ์‚ฌํ•ญ์„ ๋จผ์ € ์ •๋ฆฌํ•ด ์ฃผ๊ณ , PR์„ ์ˆ˜์ •ํ•ด ์ฃผ์„ธ์š”.

ํ˜„์žฌ PR์€ CE ๋ฒ„์ „์—์„œ๋Š” ํ•ด๋‹น configure ์‚ฌํ•ญ์„ ์ œ๊ฑฐ ๋กœ ๋ณ€๊ฒฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ดํ›„ EE ๋ฒ„์ „์—์„œ๋Š” ํ•ด๋‹น configure ์‚ฌํ•ญ์„ ์ ํ•ฉํ•˜๊ฒŒ ์ถ”๊ฐ€๋ฅผ EE ์ชฝ PR๋กœ ์˜ฌ๋ ค ์ง„ํ–‰ํ•˜๊ฒ ๋‹ˆ๋‹ค.

@ing-eoking ing-eoking changed the title FIX: Link a librt if it exists INTERNAL: Remove the check for clock_gettime function Oct 31, 2024
@ing-eoking ing-eoking marked this pull request as draft October 31, 2024 02:27
@ing-eoking ing-eoking marked this pull request as ready for review October 31, 2024 02:42
@jhpark816
Copy link
Collaborator

๋ณธ PR์„ mergeํ•˜์—ฌ EE์— ๋ฐ˜์˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ,
๋ณธ PR์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  EE์„ ๋จผ์ € ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

@jhpark816
Copy link
Collaborator

@ing-eoking
๋ณธ PR์„ mergeํ•˜๋ฉด ๋˜์ฃ ?

@ing-eoking
Copy link
Collaborator Author

@jhpark816

๋„ค ๋จธ์ง€ํ•ด๋„ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@jhpark816 jhpark816 merged commit bf52896 into naver:develop Nov 11, 2024
1 check passed
@ing-eoking ing-eoking deleted the lrt branch November 11, 2024 07:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants