Rcutils: ์ง€์ •๋œ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํฌ๊ธฐ ๊ณ„์‚ฐ(ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ ํฌํ•จ)

์— ๋งŒ๋“  2020๋…„ 10์›” 27์ผ  ยท  13์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ros2/rcutils

rcutils_calculate_directory_size()๋Š” ์žฌ๊ท€ ์—†์ด ๋””๋ ‰ํ† ๋ฆฌ ํฌ๊ธฐ ๊ณ„์‚ฐ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
rcutils_calculate_directory_size()๊ฐ€ ์žฌ๊ท€๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์–ด๋–ค ์›์ธ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  13 ๋Œ“๊ธ€

๋‚˜๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ƒ๊ฐํ•˜์ง€ ์•Š์ง€๋งŒ ์žฌ๊ท€ ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

rcutils_calculate_directory_size ๋Š” ํ˜„์žฌ rosbag2 ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  ํŒŒ์ผ์ด ์žˆ์œผ๋ฏ€๋กœ ์ง€๊ธˆ ๋‹น์žฅ์€ ์žฌ๊ท€์ ์ผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

rcutils_calculate_directory_size๋Š” ํ˜„์žฌ rosbag2 ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  ํŒŒ์ผ์ด ์žˆ์œผ๋ฏ€๋กœ ์ง€๊ธˆ ๋‹น์žฅ์€ ์žฌ๊ท€์ ์ผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ. ์ด์ œ rosbag2์˜ metadata_io.cpp ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

์žฌ๊ท€ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์žฌ๊ท€์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์žฌ๊ท€ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์žฌ๊ท€์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ. ์•„๋ž˜์™€ ๊ฐ™์ด rosbag2์˜ ํ˜„์žฌ ๊ตฌํ˜„

https://github.com/ros2/rosbag2/blob/700817c42f1bbc26ced79aca2186094350c8d1be/rosbag2_storage/src/rosbag2_storage/metadata_io.cpp#L229 -L240

์ง€์ •๋œ ๊ฒฝ๋กœ์˜ ์ด ํŒŒ์ผ ํฌ๊ธฐ๋งŒ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. sqlite3 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ(์ด์ œ rosbag2๋Š” ์ด๊ฒƒ์„ ์Šคํ† ๋ฆฌ์ง€ ๋ฐฑ์—”๋“œ๋กœ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.) sqlite3 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ•˜๋‚˜์˜ ํŒŒ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค(์˜ˆ: leveldb)์˜ ๊ฒฝ์šฐ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์ฝ”๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •ํ™•ํ•œ ํฌ๊ธฐ๋ฅผ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์žฌ๊ท€๋ฅผ ์ง€์›ํ•˜๋„๋ก ์ด ํ•จ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
์ด ์ˆ˜์ •์œผ๋กœ ์ธํ•ด ํ˜„์žฌ ์ฝ”๋“œ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์žฌ๊ท€๋ฅผ ์ง€์›ํ•˜๋„๋ก ์ด ํ•จ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
์ด ์ˆ˜์ •์œผ๋กœ ์ธํ•ด ํ˜„์žฌ ์ฝ”๋“œ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ, ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๊ฒƒ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค. ํ˜ธ์ถœ์ž๊ฐ€ ์‹ค์ œ๋กœ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ํ•จ์ˆ˜์— recursive ๋ถ€์šธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„์ž…ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‚˜์—๊ฒŒ๋Š” ์ข‹๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

@clalancette
CC: @Barry-Xu-2018

๋Œ“๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
์‹ค์ œ๋กœ ์šฐ๋ฆฌ๋Š” leveldb ๋ฅผ rosbag2 ๋ฐฑ์—”๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ด ๊ฐœ์„  ์‚ฌํ•ญ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@clalancette @fujitatomoya

ํ˜ธ์ถœ์ž๊ฐ€ ์‹ค์ œ๋กœ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ํ•จ์ˆ˜์— ์žฌ๊ท€ ๋ถ€์šธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„์ž…ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‚˜์—๊ฒŒ๋Š” ์ข‹๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

์ƒˆ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด rcutils๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ํ›„ rosbag2๋„ ๋™์‹œ์— ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด rosbag2 ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

Linux ํ”Œ๋žซํผ์—์„œ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Windows ํ”Œ๋žซํผ์—์„œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ ์œˆ๋„์šฐ ํ™˜๊ฒฝ์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด rcutils๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ํ›„ rosbag2๋„ ๋™์‹œ์— ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด rosbag2 ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋„ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žฌ๊ท€์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฌ๊ท€ ๊ฒ€์ƒ‰์ด ์•„๋‹Œ ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์žฌ๊ท€ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ƒˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋„ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žฌ๊ท€์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฌ๊ท€ ๊ฒ€์ƒ‰์ด ์•„๋‹Œ ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์žฌ๊ท€ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ƒˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‘. ๋™์˜ํ•˜๋‹ค.

@clalancette

์ƒˆ ๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์ด rcutils_calculate_directory_size๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
ํ˜„์žฌ rosbag2๋Š” ํ–ฅ์ƒ๋œ rcutils_calculate_directory_size()์™€ ํ•จ๊ป˜ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์ด rcutils_calculate_directory_size๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
ํ˜„์žฌ rosbag2๋Š” ํ–ฅ์ƒ๋œ rcutils_calculate_directory_size()์™€ ํ•จ๊ป˜ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ๊ฑฑ์ •ํ•˜๋Š” ์ด์œ ๋Š” rosbag2 ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์— "์ถ”๊ฐ€" ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์‚ฌ์šฉ์ž๋“ค ์‚ฌ์ด์—์„œ ์•ฝ๊ฐ„์˜ ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŽ์ด ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด rosbag2๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

API๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด rcutils_calculate_directory_size_recursive() ์ธ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

rcutils_calculate_directory_size() ์—์„œ ํ•ญ์ƒ ์žฌ๊ท€ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋ฉด rosbag2์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์–ป์œผ๋ ค๋ฉด @Karsten1987 ์— ping์„ ๋ณด๋‚ด์‹ญ์‹œ์˜ค.

@clalancette

๋‚˜๋Š” ๋‹น์‹ ์˜ ๊ฑฑ์ •์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋“œ๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. rosbag2์˜ ์•„๋ž˜ ์ฝ”๋“œ์—์„œ๋งŒ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

https://github.com/ros2/rosbag2/blob/700817c42f1bbc26ced79aca2186094350c8d1be/rosbag2_storage/src/rosbag2_storage/metadata_io.cpp#L229 -L240

์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•œ ํ›„ ๊ธฐ๋ณธ sqlite3 ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ rosbag2๋„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฌผ๋ก  @Karsten1987์˜ ์˜๊ฒฌ์„ ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@Barry-Xu-2018

๋‚˜๋Š” ๋‹น์‹ ์ด ์ด๊ฒƒ์„ ๋‹ซ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

306์ด ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰