μλ
νμΈμ,
μ΄ λ¬Έμ λ v2.3.3κ³Ό v2.4.0 μ¬μ΄μ μ»€λ° ce3dda9a1747cc6a4c044eafe5a2eb653c974919μ μν΄ λ°μνμ΅λλ€. λ€μ μλ₯Ό κ³ λ €νμμμ€. foo.c.zip .
κ·Έκ²μ λ§€μ° λ§μ μμ κ·μΉμ μΆκ°ν©λλ€. κ·Έλ¦¬κ³ μμμ μΈκΈν μ»€λ° ν μ½ 100λ°° λλ¦¬κ² μλν©λλ€.
foo.c
v2.4.1μ μ¬μ©ν μ€ν μκ°: 0.448
foo.c
v2.3.3μ μ¬μ©ν μ€ν μκ°: 0.077
λλ μ‘°κΈ νκ³ db_col_transaction_start()κ° μ΄λ―Έ μ‘΄μ¬νλ νν° μ»¬λ μ
μ 볡μ¬νκ³ arch_filter_rule_add()λ₯Ό μ¬μ©νμ¬ νν° κ·μΉμ 볡μ νλ€λ κ²μ μμμ΅λλ€. κ·Έλ¬λ arch_filter_rule_add()λ arch_syscall_translate()λ₯Ό νΈμΆνκ³ μ΄λ arch_syscall_resolve_name()μ νΈμΆνλ©° μ΄λ O(μ£Όμ΄μ§ μν€ν
μ²μ μμ€ν
νΈμΆ μ)μμ μλν©λλ€. λ°λΌμ νλμ κ·μΉμ μΆκ°νλ κ²μ IMOκ° μ λ§ λμ O(μ΄λ―Έ μΆκ°λ κ·μΉμ μ * μ¬μ©λ μν€ν
μ²μ μμ€ν
νΈμΆ μ)μμ μ μ΄λ μλν©λλ€.
μμ μμμ arch_filter_rule_add() μ λν νΈμΆ μλ₯Ό μΈμκ³ 201152
μ κ°μ΅λλ€.
κ·Έ μ»€λ° μ΄μ μλ arch_filter_rule_add()μ λν νΈμΆ νμκ° 896
. κ·Έλ¦¬κ³ λ΄κ° μ½λμμ μ΄ν΄ν λ°μ λ°λ₯΄λ©΄ db_col_transaction_start()λ μ΄λ―Έ μ‘΄μ¬νλ νν° μ»¬λ μ
μ 볡μ¬νκ³ arch_filter_rule_add()λ₯Ό μ¬μ©νμ§ μμ΅λλ€. O(μ΄λ―Έ μΆκ°λ κ·μΉμ μ + μ£Όμ΄μ§ μν€ν
μ²μ λν μμ€ν
νΈμΆμ μ)μ λν κ·μΉμ μΆκ°νλ μκ°μ΄ ν¨μ¬ λ μ’μ΅λλ€.
κ·Έλ¬λ IMOλ nκ°μ κ·μΉμ μΆκ°νλ κ²μ΄ O(n^2)μμ μλνκΈ° λλ¬Έμ μ΄λ―Έ μΆκ°λ κ·μΉμ μμ κ΄λ ¨λμ΄μλ μ λ©λλ€. κ·Έλ¬λ κ·Έκ²μ λ€λ₯Έ λ Όμμ μ£Όμ μ΄λ―λ‘ μμ νν°λ λλ¬Όκ² μμ±λλ νν°μλ λ¬Έμ κ° λμ§ μμ΅λλ€.
μ΄ λ¬Έμ κ° μ€μν μ΄μ λ 무μμ
λκΉ?
μΌλΆ νν°λ μ€ν νλ‘κ·Έλ¨ PIDκ° νμν©λλ€(μ: μ€λ λκ° μμ μκ²λ§ μ νΈλ₯Ό λ³΄λΌ μ μλλ‘ νμ©). λ°λΌμ μ νλ νλ‘κ·Έλ¨μ μλΉν νμ μ€νν΄μΌ νλ κ²½μ° λ§€μ° λμ λλ μ€λ²ν€λκ° λ©λλ€. μ½ 300κ° κ·μΉμ νν°κ° μκ³ libseccomp μ€λ²ν€λλ μλλ°μ€ νλ‘μΈμ€ μ€νλΉ μ½ 0.16μ΄μ
λλ€(νλ‘μΈμ€λ₯Ό μμ λ² μ€ν).
λΉμ μ λμμ 미리 κ°μ¬λ립λλ€!
μλ νμΈμ @varqoxμ λλ€.
μ, syscall λ¦¬μ‘Έλ² ν¨μλ μ½κ°μ κ°μ μ μ¬μ©ν μ μμ΅λλ€. μ€μ λ‘ μ½λλ₯Ό 보면 λ€μκ³Ό κ°μ λͺ κ°μ§ μ£Όμμ΄ νμλ©λλ€.
/* XXX - plenty of room for future improvement here */
ν΄λΉ μ½λλ₯Ό κ°μ νλ €λ κ²½μ° λμλ§μ μ¬μ©ν μ μμ΅λλ€!
@pcmooreκ° μΈκΈνλ―μ΄ libseccomp λ₯Ό μ¬μ©νμ¬ seccomp νν°μ _μμ±_ μλλ₯Ό λμΌ μ μλ μΆ©λΆν κΈ°νκ° μμ΅λλ€. μμμ κ·νμ μ°κ΅¬λ κ°μ μ μ¬μ©ν μ μλ μ¬λ¬ μμ μ€ νλλ₯Ό μ€λͺ νμ΅λλ€. μ΄κ²μ λ΄ μ¬μ©μμ λν μ°λ €κ° μλλ―λ‘ κ·Έκ²μ μ§μ€νμ§ μμμ΅λλ€.
_runtime_ μ±λ₯κ³Ό κ΄λ ¨νμ¬ μ λ νμ¬ foo.cμμ μ 곡ν κ²κ³Ό κ°μ ν° νν°μ μ΄μ§ νΈλ¦¬λ₯Ό μ¬μ©νλ μμ μ νκ³ μμ΅λλ€. λ΄λΆ κ³ κ°μ μ΄κΈ° κ²°κ³Όλ μ λ§ν΄ 보μ΄μ§λ§ λ³κ²½ μ¬νμ λν΄ λ λ€λ₯Έ μκ°μ μ»κ³ μΆμ΅λλ€. ν 리νμ€νΈ μ°Έμ‘° https://github.com/seccomp/libseccomp/pull/152
μκ² μ΅λλ€. syscall ν΄κ²°μ΄ κ°μ λ μ μμ§λ§ λ¬Έμ μ κ·Όλ³Έ μμΈμ μλλλ€. λ΄κ° 보기 μ db_col_transaction_start() μμ μ€λ μ·μ μμ±νλ κ² μ λλ€. μλ κ·μΉμμ ν΄κ²°λ syscallμ ν΄κ²°νκΈ° λλ¬Έμ λλ¦° arch_filter_rule_add() κ° νΈμΆλ©λλ€.
λλ κ·Έκ²μ λ€μκ³Ό κ°μ΄ λ³Έλ€: μ°λ¦¬λ λͺ¨λ κ·μΉκ³Ό ν¨κ» νμ¬ νν°μ μ 체 μΈνΈ(μΌλͺ struct db_filter)λ₯Ό 볡μ νκΈ°λ₯Ό μνλ―λ‘ μ°λ¦¬κ° μ΄λ―Έ κ°μ§κ³ μλ λͺ¨λ νν°λ₯Ό _볡μ¬_νλ λμ μ²μλΆν° λͺ¨λ νν°λ₯Ό _ꡬμ±_ν©λλ€. μ°λ¦¬λ μ²μλΆν° λ§λ€ νμκ° μμ΅λλ€. μ°λ¦¬λ λ¨μ§ 볡μ¬λ³Έμ μνλ μμ ν λΉλ νν°λ₯Ό κ°μ§κ³ μμ΅λλ€. μ κ° λμΉ λΆλΆμ΄ μμμ§λ λͺ¨λ₯΄μ§λ§ db_col_transaction_start() ν¨μμ λ§μ κ°μ μ΄ μ΄λ£¨μ΄μ§ κ² κ°μ΅λλ€.
λ΄λΆ libseccomp db 컬λ μ μ λͺ¨λ μνμμ μ΄λ₯Ό 볡μ νλ κ²μ κ°λ¨ν μμ μ΄ μλλ―λ‘ μλ κ·μΉμμ 컬λ μ μ μ¬μμ±νλ κ²μ΄ ν¨μ¬ μ½μ΅λλ€(μ½λ κ΄μ μμ). μλ κ·μΉμ μΆμ νλ©΄ κΈ°μ‘΄ κ·μΉμ "μ κ±°"νλ κΈ°λ₯μ μ 곡ν μλ μμ΅λλ€(ν₯ν κΈ°λ₯ κ°λ₯).
μ΄κ²μ νΈλμμ μ½λκ° κ°μ λ μ μλ€λ κ²μ λ§νλ κ²μ΄ μλλλ€. νμ€ν ν μ μμ΅λλ€. κ·Έλ¬λ νμ¬ μ½λλ κΈ°λ³Έμ μΌλ‘ λ¨μν¨ λλ¬Έμ μλ κ·Έλλ‘μ λλ€.
μ΄ λ³κ²½μΌλ‘ μΈν΄ μ¬μ©μμ μκ° μ΄κ³Όκ° λ°μνμ΅λλ€. μ λ§ μμ²λ μλλ§νΌ μλκ° λλ €μ‘μ΅λλ€.
λ λ€λ₯Έ μκ°μΌλ‘, μ 체 νΈλ¦¬κ° μλ νΈλμμ μμ μ κ·μΉλ§ 볡μ νκ³ μ€ν¨ν νΈλμμ μμλ§ νΈλ¦¬λ₯Ό μ¬μμ±νλλ‘ λ³κ²½ν μ μμ΅λλ€. μλ²½νμ§λ μμ§λ§ μλΉν μκ°μ λλλ €μΌ ν©λλ€.
컨ν μ΄λ λ° exec νλ‘μΈμ€μ μμ μκ°μΌλ‘ μΈν΄ μ±λ₯μ΄ ν¬κ² μ νλκ³ μ¬λλ€μ΄ 2.3λ°°λ‘ κ³ μ λκΈ° λλ¬Έμ μ°λ¦¬λ 무μΈκ°λ₯Ό ν΄μΌ ν©λλ€.
λλ λ¬Έμ μ _"κ±°λν"_ νΉμ±μ λν΄ λ μ΄μ μΈκΈνμ§ μμ κ²μ λλ€. κ·Έ κ΄μ μ μ΄λ―Έ μ¬λ¬ λ² λ§λ€μ΄μ‘μΌλ©° μλμ μ΄κ³ μ¬μ© μ¬λ‘μ λ°λΌ μμ‘΄μ μ΄λΌκ³ μκ°ν©λλ€. κ·Έλ¬λ v2.4 μ΄μ μ libseccomp 릴리μ€λ 곡κ°λ(λ¬Έμ #139) μ μ¬μ μΈ μ·¨μ½μ μ μ·¨μ½νλ€λ μ μ λͺ¨λμκ² μκΈ°μν€κ³ μΆμμ΅λλ€.
μ΄ λ¬Έμ κ° κ±±μ λλ λΆλ€μ μν΄ νμ¬ v2.5 릴리μ€λ‘ νμλμ΄ μμ΅λλ€.
리ν©ν λ§μ νκ³ λ§μ΄λ 릴리μ€μμ "κ±°λν" μ±λ₯ μν₯μ λ―ΈμΉλ©° μ¬μ© μ¬λ‘μ λ°λΌ λ€λ₯΄λ€κ³ λ§ν¨μΌλ‘μ¨ λμμ΄ λμ§ μμ΅λλ€. λ°°ν¬νμ΄ 2.4λ‘ μ λ°μ΄νΈλ¨μ λ°λΌ μ¬λλ€μ΄ μμ차리기 μμν κ²μ΄κΈ° λλ¬Έμ μ΄κ²μ μ§μ§νκ² λ°μλ€μ΄μμμ€.
@crosbymichael λ³κ²½ μ¬νμ λ¨μν 리ν©ν λ§μ΄ μλλΌ λ¬Έμ λ₯Ό μμ νκ³ μ»€λμ λ³κ²½ μ¬νμ μ§μνλ λ° νμνμ΅λλ€(νΉν 32λΉνΈ x86μ μμΌ μμ€ν νΈμΆκ³Ό κ°μ΄ λ€μ€ν λ° μ§μ νΈμΆ μμ€ν νΈμΆμ λͺ¨λ μ§μν΄μΌ ν νμκ° μμ).
λλ μ΄κ²μ λ λ € λ²λ¦¬λ κ²μ΄ _μλλλ€_, μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ λν΄ κ³μ μκ°νκ³ μμ΅λλ€(μμ λ΄ μ€λͺ μ°Έμ‘°). κ·Έλ¦¬κ³ λ΄κ° μ΄κ²μ λ€μ λ§μ΄λ 릴리μ€λ₯Ό μν κ²μΌλ‘ νμνλ€λ μ¬μ€μ λλ€. νμμ μμλ μ λμ μΈ λκΈλ‘ μΈμνκΈ° μ΄λ €μ°λ, μλκ° μλλΌλ©΄ μμΌλ‘ λκΈμ λ¬ λ μ’ λ μ κ²½μ¨μ£Όμ ¨μΌλ©΄ ν©λλ€. μ΄ λ¬Έμ μ μ§ν μν©μ΄ λ§μμ λ€μ§ μμΌλ©΄ κ²ν λ₯Ό μν΄ ν¨μΉ/PRμ μ μΆνμ¬ μΈμ λ μ§ λμμ λ°μ μ μμ΅λλ€.
μμ κ³Ό λ€λ₯Έ μ¬λμ΄ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ κ³ λ € μ€μΈ λͺ¨λ μ¬λμκ² μ£Όμνμμμ€.
λλ μ΅κ·Όμ μ°λ¦¬κ° κ±°λμ κ΄λ ¨νμ¬ μ°λ¦¬κ° νλ μΌμ νλ μ΄μ λ₯Ό μκΈ°νμ΅λλ€(λͺ¨λ κ²μ 미리 볡μ¬). μ€ν¨ μμ΄ νΈλμμ
μ λ‘€λ°±ν μ μμ΄μΌ νκΈ° λλ¬Έμ μ΄ μμ
μ μνν©λλ€. μμ?
μ μμ μΈ seccomp_rule_add() μμ
μ μ₯μ κ° λ°μν κ²½μ°μλ νν°λ₯Ό κ·Έλλ‘ μ μ§ν΄μΌ ν©λλ€. μΌλ° κ·μΉ μΆκ°μ μΌλΆλ‘ λ€μ€ λΆλΆ νΈλμμ
(μ: x86/s390/s390x/etcμ socket/ipc syscalls)μ μ€ν¨νλ©΄ μ€λ₯ μμ΄ νΈλμμ
μμ μ νν°λ‘ λλ릴 μ μμ΄μΌ ν©λλ€( λ©λͺ¨λ¦¬ μλ ₯ λ±μ κ΄κ³μμ΄).
κ·μΉ μμ΄ νΈλ¦¬λ₯Ό 볡μ νλ κ²μ νΈλ¦¬μ νΉμ±κ³Ό νΈλ¦¬ λ΄λΆμ μ°κ²°λ‘ μΈν΄ κ³μν΄μ μ΄λ €μΈ κ²μ λλ€. κ·Έλ¬λ λ΄λΆ νΈλμμ μ μμ±ν΄μΌ ν λλ₯Ό μ νμ μΌλ‘ μ νν μ μμ κ²μ λλ€. νμνμ§ μμ κ²½μ°.
λλ μ΄κ²μ 보λ λ° μ‘°κΈ λ λ§μ μκ°μ ν μ νκ³ κ·μΉ μΆκ° μ€μ μμ¬ κ²°μ νΈλ¦¬λ₯Ό νκ΄΄μ μΌλ‘ μμ νλ λ°©μ λλ¬Έμ κ·μΉ μΆκ°λ₯Ό νΈλμμ μΌλ‘ λννλ κ²μ νΌν μ μμμ§ νμ μ΄ μμ§ μμ΅λλ€. μ΄κ²μ λ΄λΆμ μΌλ‘ νΈλμμ μ¬μ©μ μ ννλ λ°©λ²μ μ°Ύλ λμ μλλ₯Ό λμ΄λ λ°©λ²μ μ°ΎμμΌ ν¨μ μλ―Έν©λλ€. κ³ λ§κ²λ ν΄κ²°μ± μ μ°Ύμ κ² κ°μ΅λλ€. λ°λ‘ κ·Έλ¦Όμ λ무μ λλ€.
νμ¬ μ°λ¦¬λ μλ‘μ΄ νΈλμμ μ μμ±ν λλ§λ€ μλ‘μ΄ νΈλ¦¬λ₯Ό λ§λ€κ³ μ±κ³΅ μ νκΈ°ν©λλ€. μ°λ¦¬κ° 보μλ―μ΄ μΌλΆ μ¬μ© μ¬λ‘μμλ μμ²λκ² λ릴 μ μμ΅λλ€. μ μκ°μ μ»€λ° μ μ€λ³΅ νΈλ¦¬λ₯Ό λ²λ¦¬λ λμ λ°©κΈ μΆκ°ν κ·μΉμ μ€λ³΅ νΈλ¦¬μ μΆκ°(νμ¬ νν°μ 볡μ¬λ³Έ λ§λ€κΈ°)νκ³ "μλ νΈλμμ "μΌλ‘ μ μ§νμ¬ λ€μ μλλ₯Ό λμ΄λ κ²μ λλ€. νΈλμμ μ€λ μ·. λͺ κ°μ§ μ°Έκ³ μ¬ν:
db_col_transaction_start()
λ μ‘΄μ¬νλ κ²½μ° μλ νΈλμμ
μ μ¬μ©νλ €κ³ μλν΄μΌ νμ§λ§ κ·Έλ μ§ μμ κ²½μ° νμ¬ λμμΌλ‘ ν΄λ°±ν΄μΌ ν©λλ€.db_col_transaction_abort()
λ μ§κΈκ³Ό κ°μ λ°©μμΌλ‘ μλν΄μΌ ν©λλ€. μ΄κ²μ μ€ν¨ν νΈλμμ
μ΄ μλμ° νΈλμμ
μ μ§μ°μ§λ§(νν°λ₯Ό 볡μνλ €λ©΄ νΈλ¦¬κ° νμν¨) λ€μμ μ±κ³΅ν νΈλμμ
μ΄ μλμ°λ₯Ό 볡μνλ€λ κ²μ μλ―Έν©λλ€. μ€ν¨ν νΈλμμ
μ μ΄κ²μ΄ μ£Όμ λ¬Έμ κ° λμ§ μμ λ§νΌ μΆ©λΆν λλ¬Όκ² λ°μν΄μΌ ν©λλ€.μ€λ μ λ μμ¬ ν μκ°μ΄ μ’ μμ΄μ μμ μλμ° νΈλμμ μμ΄λμ΄λ₯Ό ꡬννλ λ° λΉ λ₯΄κ² ν΅κ³Όνμ΅λλ€. μ½λλ μ¬μ ν μ‘°μ‘νκ³ λ΄ ν μ€νΈ(μλ)λ λ μ‘°μ‘νμ§λ§ μ΄ μ κ·Ό λ°©μμΌλ‘ μ½κ°μ μ±λ₯ ν₯μμ λ³΄κ³ μλ κ² κ°μ΅λλ€.
# time for i in {0..20000}; do /bin/true; done
real 0m10.479s
user 0m7.641s
sys 0m3.924s
# time for i in {0..20000}; do ./42-sim-adv_chains > /dev/null; done
real 0m16.303s
user 0m12.584s
sys 0m4.501s
time for i in {0..20000}; do ./42-sim-adv_chains > /dev/null; done
real 0m15.021s
user 0m11.540s
sys 0m4.387s
ν μ€νΈ μ€λ²ν€λλ₯Ό λΉΌλ©΄ μ΄ "ν μ€νΈ"μμ μ½ 20%μ μ±λ₯ ν₯μμ λ³Ό μ μμ§λ§ 볡μ‘ν νν° μΈνΈμ μ΄μ μ΄ μ΄λ³΄λ€ λ λμ κ²μΌλ‘ μμν©λλ€(ν¨μ¬ λ λμκ°μ?).
@varqox λ°/λλ @crosbymichael μΌλ¨ ν¨μΉλ₯Ό μ½κ° μ 리νκ³ PRμ μμ±νλ©΄ κ·νμ νκ²½μμ μ΄κ²μ ν μ€νΈν μ μμ΅λκΉ?
λ΄ μμ ν μ€νΈ μΌμ΄μ€λ μ΄λ―Έ μ¬κΈ°μ μμ΅λλ€.
μλ νμΈμ,
μ΄ λ¬Έμ λ v2.3.3κ³Ό v2.4.0 μ¬μ΄μ μ»€λ° ce3dda9 μ μν΄ λ°μνμ΅λλ€. λ€μ μλ₯Ό κ³ λ €νμμμ€. foo.c.zip .
κ·Έκ²μ λ§€μ° λ§μ μμ κ·μΉμ μΆκ°ν©λλ€. κ·Έλ¦¬κ³ μμμ μΈκΈν μ»€λ° ν μ½ 100λ°° λλ¦¬κ² μλν©λλ€.
foo.c
v2.4.1μ μ¬μ©ν μ€ν μκ°:0.448
foo.c
v2.3.3μ μ¬μ©ν μ€ν μκ°:0.077
νμ§λ§ PRμ΄ μ€λΉλλ λλ‘ λ΄ νκ²½μμ ν μ€νΈν μ μμ΅λλ€.
@varqox μλ νμΈμ. μ, μλ λ³΄κ³ μμ ν μ€νΈ μ¬λ‘λ₯Ό ν¬ν¨νλ κ²μ 보μμ§λ§ μ€μ μ¬μ©μμ ν μ€νΈ μ¬λ‘κ° μ΄λ»κ² μνλλμ§ λ£κ³ μΆμ΅λλ€. PR #180μ μ¬μ©ν΄ λ³΄κ³ λ€μ λ³΄κ³ ν΄ μ£Όμλ©΄ μ λ§ κ°μ¬νκ² μ΅λλ€. κ°μ¬ν©λλ€!
μλ νμΈμ @pcmoore ,
μ΄ PRμ λ§λ€μ΄ μ£Όμ
μ κ°μ¬ν©λλ€.
λλ λΉμ μ PR #180μ λ§λ€κ³ ν
μ€νΈνκ³ κ²°κ³Όλ λ΄ ν
μ€νΈ μΌμ΄μ€μ λν΄ μ λ§ν©λλ€. κ³ κ°μ΄ docker μν νμΈμ μ¬μ©νκ³ libseccomp 2.4.x
μ μ±λ₯ λ¬Έμ λ₯Ό κ²ͺμκΈ° λλ¬Έμ μ΄ λ¬Έμ λ₯Ό λ΄
λλ€.
λ΄ ν
μ€νΈ μ¬λ‘μμ μ΄ PRμ μ±λ₯μ libseccomp 2.3.3
μ λΉμ·ν©λλ€. μΈλΆ μ¬νμ λ€μκ³Ό κ°μ΅λλ€.
MacBook Pro(15μΈμΉ, 2015λ
μ€λ°)μ Ubuntu 19.04 VM(2 CPU, 2G λ©λͺ¨λ¦¬)
컀λ 5.0.0-32-μΌλ°
λ컀 CE 19.03.2
20κ°μ μ©κΈ° μ€λΉ:
for i in $(seq 1 20)
do
docker run -d --name bb$i busybox sleep 3d
done
λͺ¨λ 컨ν
μ΄λμμ λμμ docker exec
λ₯Ό μ€ννμ¬ ν
μ€νΈ μ€ν
for i in $(seq 1 20)
do
/usr/bin/time -f "%E real" docker exec bb$i true &
done
0:01.05 real
0:01.12 real
0:01.16 real
0:01.20 real
0:01.23 real
0:01.27 real
0:01.31 real
0:01.35 real
0:01.37 real
0:01.38 real
0:01.40 real
0:01.41 real
0:01.40 real
0:01.40 real
0:01.45 real
0:01.46 real
0:01.47 real
0:01.48 real
0:01.48 real
0:01.49 real
0:00.98 real
0:01.63 real
0:01.67 real
0:01.95 real
0:02.55 real
0:02.70 real
0:02.70 real
0:02.96 real
0:03.04 real
0:03.16 real
0:03.17 real
0:03.21 real
0:03.23 real
0:03.27 real
0:03.24 real
0:03.29 real
0:03.27 real
0:03.29 real
0:03.28 real
0:03.27 real
0:00.95 real
0:01.12 real
0:01.20 real
0:01.23 real
0:01.28 real
0:01.29 real
0:01.31 real
0:01.37 real
0:01.38 real
0:01.40 real
0:01.43 real
0:01.43 real
0:01.44 real
0:01.45 real
0:01.42 real
0:01.47 real
0:01.48 real
0:01.48 real
0:01.48 real
0:01.50 real
AC_INIT
in configure.ac
μ $ 2.4.1
λ₯Ό μ€μ νμ΅λλ€./usr/local/lib
μ μ€μΉλμ΄ μμ΅λλ€. ν
μ€νΈ μ€μ μ¬μ©μ μ μ λΉλκ° μ¬μ© μ€μΈμ§ νμΈνκΈ° μν΄ ldd /usr/bin/runc
λ₯Ό μ€ννμ¬ νμΈνμ΅λλ€.νλ₯ν©λλ€. @xinfengliuμ λμμ κ°μ¬λ립λλ€!
μλ
νμΈμ @pcmoore ,
μ΄ PRμ κ°μ¬λ립λλ€.
μ κ²½μ°μλ libseccomp μ±λ₯μ v2.3.3μ νμ νλ μμ€μΌλ‘ 볡μν©λλ€.
g++ foo.c -lseccomp -o foo -O3
for ((i=0; i<10; ++i)); do time ./foo; done
./foo 0.01s user 0.00s system 98% cpu 0.018 total
./foo 0.02s user 0.00s system 98% cpu 0.020 total
./foo 0.02s user 0.00s system 98% cpu 0.019 total
./foo 0.02s user 0.00s system 98% cpu 0.018 total
./foo 0.02s user 0.00s system 98% cpu 0.019 total
./foo 0.02s user 0.00s system 98% cpu 0.019 total
./foo 0.02s user 0.00s system 98% cpu 0.019 total
./foo 0.02s user 0.00s system 98% cpu 0.019 total
./foo 0.02s user 0.00s system 98% cpu 0.018 total
./foo 0.02s user 0.00s system 98% cpu 0.019 total
νκ· : 0.0188 s
./foo 0.19s user 0.00s system 99% cpu 0.195 total
./foo 0.19s user 0.00s system 99% cpu 0.194 total
./foo 0.19s user 0.00s system 99% cpu 0.193 total
./foo 0.19s user 0.00s system 99% cpu 0.196 total
./foo 0.19s user 0.00s system 99% cpu 0.195 total
./foo 0.20s user 0.00s system 99% cpu 0.196 total
./foo 0.19s user 0.00s system 99% cpu 0.194 total
./foo 0.20s user 0.00s system 99% cpu 0.197 total
./foo 0.19s user 0.00s system 99% cpu 0.195 total
./foo 0.19s user 0.00s system 99% cpu 0.194 total
νκ· : 0.1949 s
./foo 0.01s user 0.01s system 98% cpu 0.012 total
./foo 0.01s user 0.00s system 97% cpu 0.013 total
./foo 0.01s user 0.00s system 96% cpu 0.013 total
./foo 0.01s user 0.01s system 97% cpu 0.014 total
./foo 0.01s user 0.00s system 97% cpu 0.012 total
./foo 0.01s user 0.00s system 98% cpu 0.013 total
./foo 0.01s user 0.00s system 98% cpu 0.012 total
./foo 0.01s user 0.00s system 98% cpu 0.013 total
./foo 0.01s user 0.00s system 97% cpu 0.013 total
./foo 0.01s user 0.00s system 97% cpu 0.011 total
νκ· : 0.0126 s
μ΄ PRμ μ΄ ν©μ± ν μ€νΈμμ v2.3.3λ³΄λ€ μ½κ°μ μλ ν₯μμ μ 곡νλ κ² κ°μ΅λλ€.
Measured: 0.0052 s
Measured: 0.0040 s
Measured: 0.0046 s
Measured: 0.0042 s
Measured: 0.0038 s
Measured: 0.0038 s
Measured: 0.0039 s
Measured: 0.0036 s
Measured: 0.0042 s
Measured: 0.0044 s
Measured: 0.0036 s
Measured: 0.0037 s
Measured: 0.0044 s
Measured: 0.0035 s
Measured: 0.0035 s
Measured: 0.0035 s
Measured: 0.0040 s
Measured: 0.0037 s
Measured: 0.0043 s
Measured: 0.0042 s
Measured: 0.0035 s
Measured: 0.0034 s
Measured: 0.0038 s
Measured: 0.0035 s
Measured: 0.0035 s
Measured: 0.0037 s
Measured: 0.0038 s
νκ· : 0.0039 s
Measured: 0.0496 s
Measured: 0.0480 s
Measured: 0.0474 s
Measured: 0.0475 s
Measured: 0.0479 s
Measured: 0.0479 s
Measured: 0.0492 s
Measured: 0.0485 s
Measured: 0.0491 s
Measured: 0.0490 s
Measured: 0.0484 s
Measured: 0.0483 s
Measured: 0.0480 s
Measured: 0.0482 s
Measured: 0.0474 s
Measured: 0.0483 s
Measured: 0.0507 s
Measured: 0.0472 s
Measured: 0.0482 s
Measured: 0.0471 s
Measured: 0.0498 s
Measured: 0.0489 s
Measured: 0.0474 s
Measured: 0.0494 s
Measured: 0.0483 s
Measured: 0.0498 s
Measured: 0.0492 s
νκ· : 0.0466 s
Measured: 0.0058 s
Measured: 0.0059 s
Measured: 0.0054 s
Measured: 0.0046 s
Measured: 0.0059 s
Measured: 0.0048 s
Measured: 0.0045 s
Measured: 0.0051 s
Measured: 0.0052 s
Measured: 0.0053 s
Measured: 0.0048 s
Measured: 0.0048 s
Measured: 0.0045 s
Measured: 0.0044 s
Measured: 0.0044 s
Measured: 0.0059 s
Measured: 0.0044 s
Measured: 0.0046 s
Measured: 0.0046 s
Measured: 0.0044 s
Measured: 0.0044 s
Measured: 0.0062 s
Measured: 0.0047 s
Measured: 0.0044 s
Measured: 0.0044 s
Measured: 0.0044 s
Measured: 0.0044 s
νκ· : 0.0049 s
ν©μ± ν μ€νΈμμ PRμ v2.3.3λ³΄λ€ λ λμ μκ°μ μ 곡νμ§λ§ μ€μ μΈκ³μμλ μ½κ° λ립λλ€(λ 볡μ‘ν κ·μΉκ³Ό λ κ°μ ν° νν°λ₯Ό λ³ν©νκΈ° μν΄ seccomp_merge()λ₯Ό μ€ννκΈ° λλ¬ΈμΌ μ μμ). κ·Έλ¬λ μ¬μ ν v2.4.2μ λΉν΄ λλ΅ 10λ°°μ μλ ν₯μμ μ 곡ν©λλ€.
@varqox μ±λ₯μ νμΈν΄ μ£Όμ μ κ°μ¬ν©λλ€! @drakenclimber κ° λ§μ§λ§ λκΈμ μλ΅νλ μ¦μ(κ·Έλ¦¬κ³ κ·Έκ° μ κΈ°ν μ μλ λλ¨Έμ§ λ¬Έμ λ₯Ό μμ ν¨) μ΄λ₯Ό λ³ν©ν κ²μ λλ€.
μ, μ κ²½ μ°μ§ λ§μΈμ. @drakenclimber κ° PRμ μΉμΈλ κ²μΌλ‘ νμν κ²μ λ°©κΈ μμμ°¨λ Έμ΅λλ€. μ΄μ λ³ν©νμ¬ μ§ννκ² μ΅λλ€.
λ°©κΈ PR #180μ λ³ν©νμ¬ μ΄ μμ μ μ’ λ£λ‘ νμν μ μλ€κ³ μκ°ν©λλ€. λ¨μ μ±λ₯ λ¬Έμ λ₯Ό λ°κ²¬ν μ¬λμ΄ μμΌλ©΄ μΈμ λ μ§ λκΈμ λ¬κ±°λ λ€μ μ¬μμμ€. μΈλ΄μ¬κ³Ό λμμ μ£Όμ λͺ¨λ λΆλ€κ» κ°μ¬λ립λλ€!
@pcmoore μ΄λ¬ν λ³κ²½ μ¬νκ³Ό ν¨κ» 곧 μΆμν κ³νμ λκΉ?
μ΄κ²μ νμ¬ libseccomp v2.5 λ¦΄λ¦¬μ€ μ΄μ νμ μΌλΆμ΄λ©° μλ λ§ν¬λ₯Ό μ¬μ©νμ¬ v2.5 릴리μ€μ λν μ§ν μν©μ μΆμ ν μ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
μ΄ λ³κ²½μΌλ‘ μΈν΄ μ¬μ©μμ μκ° μ΄κ³Όκ° λ°μνμ΅λλ€. μ λ§ μμ²λ μλλ§νΌ μλκ° λλ €μ‘μ΅λλ€.