aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/mn/books/handbook/dtrace/_index.adoc
diff options
context:
space:
mode:
authorSergio Carlavilla Delgado <carlavilla@FreeBSD.org>2021-01-25 23:31:29 +0000
committerSergio Carlavilla Delgado <carlavilla@FreeBSD.org>2021-01-25 23:31:29 +0000
commit989d921f5d4ac8d8b7c831c13b8954ad1901be24 (patch)
treea5d768f9af4b55422fdf5b17064879ae1c7ce032 /documentation/content/mn/books/handbook/dtrace/_index.adoc
parent0cff342f42461c5081b98bce7581f43df319e4f4 (diff)
downloaddoc-989d921f5d4ac8d8b7c831c13b8954ad1901be24.tar.gz
doc-989d921f5d4ac8d8b7c831c13b8954ad1901be24.zip
Migrate doc to Hugo/AsciiDoctor
I'm very pleased to announce the release of our new website and documentation using the new toolchain with Hugo and AsciiDoctor. To get more information about the new toolchain please read the FreeBSD Documentation Project Primer[1], Hugo docs[2] and AsciiDoctor docs[3]. Acknowledgment: Benedict Reuschling <bcr@> Glen Barber <gjb@> Hiroki Sato <hrs@> Li-Wen Hsu <lwhsu@> Sean Chittenden <seanc@> The FreeBSD Foundation [1] https://docs.FreeBSD.org/en/books/fdp-primer/ [2] https://gohugo.io/documentation/ [3] https://docs.asciidoctor.org/home/ Approved by: doceng, core
Diffstat (limited to 'documentation/content/mn/books/handbook/dtrace/_index.adoc')
-rw-r--r--documentation/content/mn/books/handbook/dtrace/_index.adoc263
1 files changed, 263 insertions, 0 deletions
diff --git a/documentation/content/mn/books/handbook/dtrace/_index.adoc b/documentation/content/mn/books/handbook/dtrace/_index.adoc
new file mode 100644
index 0000000000..c68fb8d401
--- /dev/null
+++ b/documentation/content/mn/books/handbook/dtrace/_index.adoc
@@ -0,0 +1,263 @@
+---
+title: Бүлэг 26. DTrace
+part: хэсэг III. Системийн Удирдлага
+prev: books/handbook/cutting-edge
+next: books/handbook/partiv
+---
+
+[[dtrace]]
+= DTrace
+:doctype: book
+:toc: macro
+:toclevels: 1
+:icons: font
+:sectnums:
+:sectnumlevels: 6
+:source-highlighter: rouge
+:experimental:
+:skip-front-matter:
+:toc-title: Гарчиг
+:table-caption: Хүснэгт
+:figure-caption: Зураг
+:example-caption: Жишээ
+:xrefstyle: basic
+:relfileprefix: ../
+:outfilesuffix:
+:sectnumoffset: 26
+
+ifeval::["{backend}" == "html5"]
+:imagesdir: ../../../images/books/handbook/dtrace/
+endif::[]
+
+ifeval::["{backend}" == "pdf"]
+:imagesdir: ../../../../static/images/books/handbook/dtrace/
+endif::[]
+
+ifeval::["{backend}" == "epub3"]
+:imagesdir: ../../../../static/images/books/handbook/dtrace/
+endif::[]
+
+include::shared/authors.adoc[]
+include::shared/releases.adoc[]
+include::shared/mn/mailing-lists.adoc[]
+include::shared/mn/teams.adoc[]
+include::shared/mn/urls.adoc[]
+
+toc::[]
+
+[[dtrace-synopsis]]
+== Ерөнхий агуулга
+
+DTrace буюу Dynamic Tracing (Динамик Мөрдөлт) нь үйлдвэрлэлд ашиглаж байгаа болон ашиглахын өмнөх системүүдэд үйл ажиллагааны саад тотгоруудыг олоход зориулагдсан Sun(TM)-с хөгжүүлсэн хэрэгсэл юм. Энэ нь ямар ч тохиолдолд дибаг хийгч хэрэгсэл биш боловч үйл ажиллагаа болон бусад асуудлуудыг цаг тухайд нь олох системийн анализ хийхэд зориулагдсан хэрэгсэл юм.
+
+DTrace нь системийн асуудлуудыг оношлоход зориулагдсан сэтгэл хөдлөм боломжуудтай гайхамшигтай профиль хийгч хэрэгсэл юм. Энэ нь өөрийн боломжуудыг ашиглахын тулд өмнө нь бичигдсэн скриптүүдийг ажиллуулж бас болдог. Хэрэглэгчид нь тусгай зориулалтаар өөрсдийн профиль хийлтийг өөрчлөх боломжтой DTrace D хэлийг ашиглан бүр өөрсдийн хэрэгслүүдийг зохиож болох юм.
+
+Энэ бүлгийг уншсаны дараа, та дараах зүйлсийг мэдэх болно:
+
+* DTrace гэж юу болох ямар ямар боломжуудаар хангадаг талаар.
+* Solaris(TM)-ийн DTrace шийдэл болон FreeBSD-д байгаа хоёрын хоорондын ялгаанууд.
+* FreeBSD дээр DTrace-ийг хэрхэн идэвхжүүлж ашиглах талаар.
+
+Энэ бүлгийг уншихаасаа өмнө та дараах зүйлсийг гүйцэтгэх хэрэгтэй:
+
+* UNIX(R) болон FreeBSD-ийн үндсүүдийг (crossref:basics[basics,Юниксийн үндэс]) ойлгох.
+* Цөмийн тохиргоо/эмхэтгэлтийн (crossref:kernelconfig[kernelconfig,FreeBSD цөмийг тохируулах нь]) үндсийг мэддэг байх.
+* Аюулгүй байдлын талаар болон энэ нь FreeBSD-д хэрхэн хамааралтай байх талаар зарим ойлголттой байх (crossref:security[security,Аюулгүй байдал]).
+* FreeBSD эхийг хэрхэн авч дахин бүтээх талаар ойлгох (crossref:cutting-edge[updating-upgrading,FreeBSD-г шинэчилж сайжруулах нь]).
+
+[WARNING]
+====
+
+Энэ боломж нь туршилтын гэж тооцогддог. Зарим тохиргоонууд ажиллагааны хувьд дутуу, зарим хэсэг нь ерөөсөө ажиллахгүй байж болох юм. Цагийн явцад энэ боломж нь үйлдвэрлэлд ашиглагдахад бэлэн гэж тооцогдох бөгөөд энэ баримт нь тэр тохиолдолд таарахаар өөрчлөгдөх болно.
+====
+
+[[dtrace-implementation]]
+== Шийдлийн ялгаанууд
+
+FreeBSD дээрх DTrace нь Solaris(TM)-д байдагтай маш төстэй боловч цааш үргэлжлүүлэхээсээ өмнө тайлбарлах ёстой ялгаанууд байдаг. Хэрэглэгчдийн мэдрэх үндсэн ялгаа нь FreeBSD дээр DTrace нь тусгайлан идэвхжүүлэх ёстой байдаг. DTrace нь зөв ажиллахын тулд идэвхжүүлсэн байх ёстой цөмийн тохиргоонууд болон модулиуд байдаг. Эдгээрийг дараа тайлбарлах болно.
+
+CTF өгөгдлийг цөмийн модуль болон цөмөөс өөрөөс нь дуудахад зориулсан дэмжлэгийг идэвхжүүлэх цөмийн `DDB_CTF` тохиргоо байдаг. CTF нь Solaris(TM)-ийн Compact C Type буюу Шахмал C Төрөл бөгөөд DWARF болон venerable stab-уудтай (хүндтэй хатгалтууд) адил дибаг мэдээллийн багасгасан хэлбэрийг агуулдаг. Энэ CTF өгөгдөл нь `ctfconvert` болон `ctfmerge` гэсэн бүтээх хэрэгслүүдээр хоёртын файлуудад нэмэгддэг. `ctfconvert` хэрэгсэл нь эмхэтгэгчийн үүсгэсэн DWARFELF дибаг хэсгүүдийг задлан ялгаж `ctfmerge` нь обьектуудын CTFELF хэсгүүдийг ажилладаг файлууд юм уу эсвэл хуваалцсан сангууд руу нийлүүлдэг. Цөм болон FreeBSD бүтээлтэд зориулж үүнийг хэрхэн идэвхжүүлэх талаар дэлгэрэнгүй тайлбар удахгүй бичигдэх болно.
+
+Solaris(TM)-д байдгаас өөр хангагчид FreeBSD-д байдаг. Хамгийн алдартай нь `dtmalloc` хангагч бөгөөд FreeBSD цөмд `malloc()`-ийг төрлөөр нь мөрдөх боломжийг бүрдүүлдэг.
+
+Зөвхөн `root` DTrace-ийг FreeBSD дээр ашиглаж болно. Энэ нь аюулгүй байдлын ялгаатай холбоотой бөгөөд FreeBSD-д байдаггүй хэдэн доод түвшний аюулгүй байдлын шалгалтууд Solaris(TM)-д байдаг. Тийм болохоор [.filename]#/dev/dtrace/dtrace# нь зөвхөн `root` хэрэглэгчээр хатуу хязгаарлагдсан байдаг.
+
+Төгсгөлд нь DTrace програм хангамж нь Sun(TM)-ий CDDL лицензийн доор байдаг. `Common Development and Distribution License` буюу Нийтлэг Хөгжүүлэлт ба Түгээлтийн Лиценз нь FreeBSD-тэй цуг ирдэг бөгөөд [.filename]#/usr/src/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE# юм уу эсвэл онлайн хэлбэрээр http://www.opensolaris.org/os/licensing[http://www.opensolaris.org/os/licensing] хаягаас харж болно.
+
+Энэ лиценз нь DTrace тохиргоотой FreeBSD цөм нь BSD лицензтэй хэвээр гэсэн үг боловч модулиуд нь хоёртын хэлбэрээр түгээгдэх үед юм уу эсвэл хоёртын файлууд дуудагдсан үед CDDL нь хүчин төгөлдөр болдог.
+
+[[dtrace-enable]]
+== DTrace дэмжлэгийг идэвхжүүлэх
+
+DTrace-д зориулсан дэмжлэгийг идэвхжүүлэхийн тулд дараах мөрүүдийг цөмийн тохиргооны файлд нэмнэ:
+
+[.programlisting]
+....
+options KDTRACE_HOOKS
+options DDB_CTF
+....
+
+[NOTE]
+====
+AMD64 архитектурын хэрэглэгчид өөрсдийн цөмийн тохиргооны файлдаа дараах мөрийг нэмэхийг хүсэх болно:
+
+[.programlisting]
+....
+options KDTRACE_FRAME
+....
+
+Энэ тохиргоо нь FBT боломжид зориулсан дэмжлэгийг хангадаг. DTrace нь энэ тохиргоогүйгээр ажилладаг боловч функцийн хязгаарын мөрдөлтөд зориулсан дэмжлэг хязгаарлагдмал байх болно.
+====
+
+Бүх эх CTF тохиргоонуудтай дахин бүтээгдэж суулгагдсан байх ёстой. Ингэхийн тул FreeBSD-ийн эхийг доорх тушаалуудыг ашиглан дахин бүтээнэ:
+
+[source,bash]
+....
+# cd /usr/src
+
+# make WITH_CTF=1 kernel
+....
+
+Системийг дахин ачаалах хэрэгтэй.
+
+Дахин ачаалж шинэ цөмийг санах ойд дуудагдсаны дараа Korn бүрхүүлийн дэмжлэгийг нэмэх хэрэгтэй. DTrace хэрэгслүүд нь `ksh` дээр бичигдсэн хэд хэдэн хэрэгслүүдтэй болохоор энэ нь хэрэгтэй юм. package:shells/ksh93[]-г суулгах хэрэгтэй. Эдгээр хэрэгслүүдийг package:shells/pdksh[] эсвэл package:shells/mksh[] дээр ажиллуулж бас болно.
+
+Төгсгөлд нь одоогийн DTrace хэрэгслүүдийг олж авах хэрэгтэй. Хэрэв FreeBSD 10 бол DTrace хэрэгслүүдийг [.filename]#/usr/shared/dtrace# байрлалаас олж болно. Үгүй бол DTrace хэрэгслүүдийг package:sysutils/DTraceToolkit[] портоос суулгаж болно.
+
+[[dtrace-using]]
+== DTrace-г ашиглах
+
+DTrace боломжийг ашиглахаас өмнө DTrace төхөөрөмж байх хэрэгтэй. Төхөөрөмжийг дуудахын тулд дараах тушаалыг ажиллуулна:
+
+[source,bash]
+....
+# kldload dtraceall
+....
+
+DTrace дэмжлэг одоо боломжтой болсон байх ёстой. Бүх шалгалтыг харахын тулд администратор дараах тушаалыг одоо ажиллуулж болно:
+
+[source,bash]
+....
+# dtrace -l | more
+....
+
+Дэлгэцийн буфферийг түргэн дүүргэх болохоор бүх гаралтыг `more` хэрэгсэл рүү дамжуулдаг. Энд хүрэхэд DTrace-ийг ажиллаж байна гэж үзнэ. Одоо уг хэрэгслийг шалгаж үзэх цаг боллоо.
+
+Уг хэрэгсэл нь системийн мэдээллийг цуглуулахын тулд DTrace-тэй цуг ажиллуулж болох ашиглахад бэлэн скриптүүдийн цуглуулга юм. Нээлттэй файлууд, санах ой,CPU-ийн хэрэглээ болон өөр олон зүйлсийг шалгах скриптүүд байдаг. Скриптүүдийг дараах тушаалаар задалж болно:
+
+[source,bash]
+....
+# gunzip -c DTraceToolkit* | tar xvf -
+....
+
+`cd` ашиглан тэр сан руу өөрчилж жижиг үсгээр бичигдсэн нэртэй бүх файлууд дээр ажиллуулах зөвшөөрлүүдийг `755` руу өөрчлөх хэрэгтэй.
+
+Эдгээр бүх скриптүүдийн агуулгад өөрчлөлт хийх хэрэгтэй болно. [.filename]#/usr/bin/ksh# гэснийг [.filename]#/usr/local/bin/ksh# болгох ёстой бөгөөд [.filename]#/usr/bin/sh#-ийг [.filename]#/bin/sh# болгон ашиглахаар, төгсгөлд нь [.filename]#/usr/bin/perl#-г [.filename]#/usr/local/bin/perl# болгон ашиглахаар болгож өөрчлөх хэрэгтэй.
+
+[IMPORTANT]
+====
+FreeBSD дээрх DTrace дэмжлэг нь _бүрэн бус_ бөгөөд _туршилтын_ гэдгийг уншигчид сануулах нь ухаалаг болох юм. Эдгээр скриптүүдийн олонхи нь ажиллахгүй бөгөөд тэдгээр нь хэтэрхий Solaris(TM)-д тусгайлан зориулсан эсвэл одоо дэмжигдээгүй байгаа шалгалтуудыг ашигладаг.
+====
+
+Үүнийг бичиж байх үед DTrace хэрэгслийн зөвхөн хоёр скрипт FreeBSD дээр бүрэн дэмжигдсэн: эдгээр нь [.filename]#hotkernel# болон [.filename]#procsystime# скриптүүд юм. Эдгээр хоёрыг бид энэ бүлгийн дараагийн хэсгүүдэд авч үзэх болно.
+
+[.filename]#hotkernel# нь аль функц цөмийн ихэнх хугацааг ашиглаж байгааг илрүүлэхээр хийгдсэн. Хэвийнээр ажиллуулахад энэ нь дараахтай төстэй гаралтыг харуулах болно:
+
+[source,bash]
+....
+# cd /usr/shared/dtrace/toolkit
+# ./hotkernel
+Sampling... Hit Ctrl-C to end.
+....
+
+Системийн администратор процессийг зогсоохын тулд kbd:[Ctrl+C] товчлуурын хослолыг ашиглах ёстой. Зогсоосны дараа скрипт нь цөмийн функцуудын жагсаалт болон хугацааны мэдээллийг харуулах бөгөөд гаралтыг хугацааны ихэссэн дарааллаар эрэмбэлж харуулна:
+
+[source,bash]
+....
+kernel`_thread_lock_flags 2 0.0%
+0xc1097063 2 0.0%
+kernel`sched_userret 2 0.0%
+kernel`kern_select 2 0.0%
+kernel`generic_copyin 3 0.0%
+kernel`_mtx_assert 3 0.0%
+kernel`vm_fault 3 0.0%
+kernel`sopoll_generic 3 0.0%
+kernel`fixup_filename 4 0.0%
+kernel`_isitmyx 4 0.0%
+kernel`find_instance 4 0.0%
+kernel`_mtx_unlock_flags 5 0.0%
+kernel`syscall 5 0.0%
+kernel`DELAY 5 0.0%
+0xc108a253 6 0.0%
+kernel`witness_lock 7 0.0%
+kernel`read_aux_data_no_wait 7 0.0%
+kernel`Xint0x80_syscall 7 0.0%
+kernel`witness_checkorder 7 0.0%
+kernel`sse2_pagezero 8 0.0%
+kernel`strncmp 9 0.0%
+kernel`spinlock_exit 10 0.0%
+kernel`_mtx_lock_flags 11 0.0%
+kernel`witness_unlock 15 0.0%
+kernel`sched_idletd 137 0.3%
+0xc10981a5 42139 99.3%
+....
+
+Энэ скрипт нь цөмийн модулиудтай бас ажилладаг. Энэ боломжийг ашиглахын тулд скриптийг `-m` өгөгдөлтэй ажиллуулах хэрэгтэй:
+
+[source,bash]
+....
+# ./hotkernel -m
+Sampling... Hit Ctrl-C to end.
+^C
+MODULE COUNT PCNT
+0xc107882e 1 0.0%
+0xc10e6aa4 1 0.0%
+0xc1076983 1 0.0%
+0xc109708a 1 0.0%
+0xc1075a5d 1 0.0%
+0xc1077325 1 0.0%
+0xc108a245 1 0.0%
+0xc107730d 1 0.0%
+0xc1097063 2 0.0%
+0xc108a253 73 0.0%
+kernel 874 0.4%
+0xc10981a5 213781 99.6%
+....
+
+[.filename]#procsystime# скрипт нь өгөгдсөн PID эсвэл процессийн хувьд системийн дуудлагын цагийн хэрэглээг авч хэвлэн харуулдаг. Дараах жишээн дээр [.filename]#/bin/csh#-ийн шинэ хуулбар ажиллуулсан. [.filename]#procsystime#-ийг ажиллуулсан бөгөөд өөр нэг `csh` дээр цөөн хэдэн тушаалыг бичтэл энэ нь хүлээх горимд орсон. Энэ тестийн үр дүн энд байна:
+
+[source,bash]
+....
+# ./procsystime -n csh
+Tracing... Hit Ctrl-C to end...
+^C
+
+Elapsed Times for processes csh,
+
+ SYSCALL TIME (ns)
+ getpid 6131
+ sigreturn 8121
+ close 19127
+ fcntl 19959
+ dup 26955
+ setpgid 28070
+ stat 31899
+ setitimer 40938
+ wait4 62717
+ sigaction 67372
+ sigprocmask 119091
+ gettimeofday 183710
+ write 263242
+ execve 492547
+ ioctl 770073
+ vfork 3258923
+ sigsuspend 6985124
+ read 3988049784
+....
+
+Энд үзүүлснээр `read()` системийн дуудлага ихэнх цагийг, `getpid()` системийн дуудлага хамгийн бага хугацааг ашигласныг наносекундаар харуулж байна.
+
+[[dtrace-language]]
+== D хэл
+
+DTrace хэрэгсэл нь DTrace-ийн тусгай хэл дээр байдаг олон скриптүүдийг агуулдаг. Энэ хэл нь Sun(TM)-ийн баримтаар "D хэл" гэгддэг бөгөөд C++ хэлтэй тун төстэй юм. Энэ хэлний талаарх гүнзгий хэлэлцүүлэг нь энэ баримтаас хүрээнээс гадна юм. Энэ нь http://wikis.oracle.com/display/DTrace/Documentation[http://wikis.oracle.com/display/DTrace/Documentation] хаяг дээр дэлгэрэнгүй хэлэлцэгдсэн байдаг.