ट्रेस का निरीक्षण, एक्सपोर्ट और समीक्षा करें
.altrace ट्रेस का निरीक्षण करें, उसकी टाइमलाइन और VCD या Chrome एक्सपोर्ट सहेजें, और परिणामों को ऐसे समीक्षा पैकेज के रूप में रखें जिसे आप फिर खोल सकें।
Linux पर Altifigence CLI 0.1.9 से एक .altrace ट्रेस का निरीक्षण करें, उसकी टाइमलाइन सहेजें, उसे VCD या Chrome ट्रेस इवेंट के रूप में एक्सपोर्ट करें, और परिणामों को ऐसे समीक्षा पैकेज में रखें जिसकी आप सूची देख सकें, जिसे दिखा सकें और वापस पढ़ सकें। हर कमांड वह alti-trace इंजन चलाता है जो alti के साथ आता है।
ट्रेस फ़ाइल तैयार करें
alti trace कमांड .altrace फ़ाइलें पढ़ते हैं। फ़ाइल में चार बाइट ALTR, दो वर्शन बाइट, दो शून्य बाइट, हेडर की लंबाई 8 लिटिल-एंडियन बाइट के रूप में, JSON हेडर और वह पेलोड होता है जिसका हेडर वर्णन करता है। नीचे की स्क्रिप्ट एक कोर और पाँच इवेंट वाला छोटा ट्रेस लिखती है: तीन MAC_COMPUTE, एक DMA_READ और step_1 नाम का एक API_CALL। हर इवेंट पंक्ति core start duration type [api_name] होती है।
PROJECT="$(cd "$HOME/alti-projects/demo-project" && pwd -P)"
cd "$PROJECT"
le() { local n=$1 v=$2; while [ "$n" -gt 0 ]; do printf "\\x$(printf %02x $((v & 255)))"; v=$((v >> 8)); n=$((n - 1)); done; }
str() { le 8 "${#1}"; printf '%s' "$1"; }
write_trace() {
local out="$1" payload line core start dur type api total=0 header
local -a lines
mapfile -t lines
payload="$(mktemp)"
{
for line in "${lines[@]}"; do
read -r core start dur type api <<<"$line"
(( start + dur > total )) && total=$((start + dur))
done
le 8 "$total"
le 8 "${#lines[@]}"
for line in "${lines[@]}"; do
read -r core start dur type api <<<"$line"
le 4 "$core"; le 8 "$start"; le 8 "$dur"; str "$type"
if [ -n "$api" ]; then printf '\x01'; str "$api"; else printf '\x00'; fi
done
} >"$payload"
header="{\"altifigence_trace_version\":\"1.0\",\"trace\":{\"cycles\":$total,\"cores\":1,\"clock_mhz\":1000},\"payload\":{\"encoding\":\"bincode\",\"byte_length\":$(wc -c <"$payload")}}"
{ printf 'ALTR\x01\x01\x00\x00'; le 8 "${#header}"; printf '%s' "$header"; cat "$payload"; } >"$out"
rm -f "$payload"
}
write_trace run.altrace <<'EVENTS'
0 0 100 MAC_COMPUTE
0 100 50 DMA_READ
0 150 5 API_CALL step_1
0 160 100 MAC_COMPUTE
0 260 100 MAC_COMPUTE
EVENTS
wc -c < run.altraceसुनिश्चित करें कि अंतिम कमांड 376 प्रिंट करे: 16 प्रीफ़िक्स बाइट, 136 बाइट का हेडर जो "encoding":"bincode" और "byte_length":224 घोषित करता है, और 224 बाइट का पेलोड।
376ट्रेस का निरीक्षण करें
ट्रेस के पाथ के साथ alti trace inspect चलाएँ। सापेक्ष पाथ --project के सापेक्ष हल किया जाता है। डिफ़ॉल्ट आउटपुट JSON है और .artifact.inspect में ट्रेस का सारांश होता है।
alti trace inspect --project "$PROJECT" run.altrace \
| jq '.artifact.inspect | {payload_encoding, payload_bytes, total_cycles, cores, clock_mhz, event_count, event_types}'{
"payload_encoding": "bincode",
"payload_bytes": 224,
"total_cycles": 360,
"cores": 1,
"clock_mhz": 1000,
"event_count": 5,
"event_types": {
"API_CALL": 1,
"DMA_READ": 1,
"MAC_COMPUTE": 3
}
}सुनिश्चित करें कि एग्ज़िट स्टेटस 0 हो। संक्षिप्त रिपोर्ट के लिए --format text जोड़ें।
alti trace inspect --project "$PROJECT" run.altrace --format textalti-trace: run.altrace
cycles: 360
cores: 1
clock: 1000 MHz
payload: 224 bytes (bincode)
events: 5
- API_CALL: 1
- DMA_READ: 1
- MAC_COMPUTE: 3पूरे JSON का स्कीमा altifigence.trace.operation.result.v1 है। उसका .artifact.artifact_id सहेजे गए परिणाम का पहचानकर्ता है, जिसका रूप trace:altifigence.trace.inspect.v1: के बाद सारांश का content_sha256 होता है। inspect उन ट्रेस को पढ़ता है जिनका पेलोड एन्कोडिंग bincode, flatbuf, flatbuf_v2 या flat है।
टाइमलाइन और एक्सपोर्ट सहेजें
alti trace timeline ट्रेस का टाइमलाइन डेटा <OUTPUT> में लिखता है। alti trace export पहले फ़ॉर्मैट लेता है, vcd या chrome, फिर ट्रेस और आउटपुट पाथ। हर कमांड आउटपुट फ़ाइल लिखता है और उसका वर्णन करने वाला परिणाम JSON प्रिंट करता है।
alti trace timeline --project "$PROJECT" run.altrace run.timeline \
| jq '{operation_id, artifact: (.artifact | {artifact_schema, media_type, byte_length, records_written, output_label})}'{
"operation_id": "altifigence.trace.timeline.v1",
"artifact": {
"artifact_schema": "altifigence.trace.timeline.flatbuffer.v1",
"media_type": "application/vnd.altifigence.trace-flatbuffer",
"byte_length": 140,
"records_written": 5,
"output_label": "run.timeline"
}
}टाइमलाइन हर इवेंट के लिए 24 बाइट और उसके बाद API_CALL के नाम सहेजती है, इसलिए इस ट्रेस में byte_length 140 और records_written 5 मिलता है। उसी ट्रेस को दोनों फ़ॉर्मैट में एक्सपोर्ट करें।
alti trace export vcd --project "$PROJECT" run.altrace run.vcd \
| jq -c '.artifact | {artifact_schema, media_type, records_written, output_label}'
alti trace export chrome --project "$PROJECT" run.altrace run.json \
| jq -c '.artifact | {artifact_schema, media_type, records_written, output_label}'{"artifact_schema":"altifigence.trace.export.vcd.v1","media_type":"text/x-vcd","records_written":374,"output_label":"run.vcd"}
{"artifact_schema":"altifigence.trace.export.chrome.v1","media_type":"application/json","records_written":5,"output_label":"run.json"}सुनिश्चित करें कि हर कमांड का एग्ज़िट स्टेटस 0 हो। run.vcd $version पंक्ति से शुरू होती है और run.json हर इवेंट के लिए एक ऑब्जेक्ट वाला JSON ऐरे है।
head -n 1 "$PROJECT/run.vcd"
jq length "$PROJECT/run.json"$version alti_core vcd_writer 0.1 $end
5परिणामों को समीक्षा पैकेज में रखें
हर सफल inspect, timeline और export रन अपना परिणाम $PROJECT/.altifigence/artifacts/trace-review के नीचे भी सहेजता है। वे कमांड जो artifact_id प्रिंट करते हैं, वही पहचानकर्ता alti trace review materialize लेता है: पहले ट्रेस आर्टिफ़ैक्ट, फिर हर --reference आर्टिफ़ैक्ट। एक पैकेज में अधिकतम 16 रेफ़रेंस नाम दिए जा सकते हैं।
INSPECT_ID="$(alti trace inspect --project "$PROJECT" run.altrace | jq -r '.artifact.artifact_id')"
TIMELINE_ID="$(alti trace timeline --project "$PROJECT" run.altrace run.timeline | jq -r '.artifact.artifact_id')"
alti trace review materialize --project "$PROJECT" "$TIMELINE_ID" --reference "$INSPECT_ID" > "$PROJECT/package.json"
jq -r '.schema' "$PROJECT/package.json"
PACKAGE_ID="$(jq -r '.package_id' "$PROJECT/package.json")"altifigence.trace.review-package-summary.v1सुनिश्चित करें कि एग्ज़िट स्टेटस 0 हो। package_id का रूप trace-review: के बाद 64 लोअरकेस हेक्साडेसिमल अक्षर है। list अधिकतम 5 पैकेज सारांश प्रिंट करता है, सबसे नया पहले। show package_sha256 और byte_length के साथ एक सारांश प्रिंट करता है। readback सहेजे गए पैकेज को सहेजे गए आर्टिफ़ैक्ट से मिलाकर जाँचता है और पूरा पैकेज प्रिंट करता है।
alti trace review list --project "$PROJECT" | jq 'length'
alti trace review show --project "$PROJECT" "$PACKAGE_ID" | jq -r '.schema'
alti trace review readback --project "$PROJECT" "$PACKAGE_ID" \
| jq -c '{schema, references: (.reference_artifacts | length), operation: .trace_artifact.operation_id}'1
altifigence.trace.review-package-summary.v1
{"schema":"altifigence.trace.review-package.v1","references":1,"operation":"altifigence.trace.timeline.v1"}जब प्रोजेक्ट में कोई और समीक्षा पैकेज न हो, तब पहली पंक्ति 1 होती है।
सामान्य विफलताओं के बाद सुधार करें
alti-trace error: <message> प्रिंट करता है और 2 के साथ समाप्त होता है। alti वही एग्ज़िट स्टेटस लौटाता है और stderr पर एक स्टेटस पंक्ति जोड़ता है जिसमें exit=2 होता है।
ट्रेस पाथ न मिलने पर यह प्रिंट होता है:
error: cannot read missing.altrace: No such file or directory (os error 2)प्रोजेक्ट डायरेक्टरी की सूची देखें और ट्रेस का पाथ --project के सापेक्ष दें।
ls "$PROJECT"ट्रेस न होने वाली फ़ाइल देने पर नीचे दिया संदेश प्रिंट होता है। ऐसी फ़ाइल दें जो ALTR से शुरू होती हो, जैसे run.altrace।
printf 'this is not a trace\n' > "$PROJECT/notes.txt"
alti trace inspect --project "$PROJECT" notes.txterror: cannot decode trace 'notes.txt': invalid .altrace magicऐसा पहचानकर्ता जो इस प्रोजेक्ट में सहेजा नहीं गया था, materialize से नीचे दिया संदेश प्रिंट करवाता है। उसी --project के साथ चले inspect, timeline या export रन से .artifact.artifact_id कॉपी करें।
error: owned trace artifact not foundगलत रूप वाला पहचानकर्ता, दोहराया गया पहचानकर्ता या 16 से अधिक रेफ़रेंस नीचे दिया संदेश प्रिंट करवाते हैं। ट्रेस या रेफ़रेंस पहचानकर्ता trace:altifigence.trace. से शुरू होता है, और पैकेज पहचानकर्ता trace-review: के बाद 64 लोअरकेस हेक्साडेसिमल अक्षर होता है। हर पहचानकर्ता को उस कमांड से बिना बदले कॉपी करें जिसने उसे प्रिंट किया था और हर एक का नाम एक ही बार दें।
error: invalid trace review requestयदि ग्रुप या अन्य उपयोगकर्ता स्टोर डायरेक्टरी तक पहुँच सकते हैं, तो परिणाम सहेजने या पढ़ने वाला हर trace कमांड नीचे दिया संदेश प्रिंट करता है। स्टोर को केवल अपने लिए निजी बनाएँ।
error: trace review store unavailablechmod -R go-rwx "$PROJECT/.altifigence"