Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ep:teme:01 [2026/03/04 14:14]
radu.mantu
ep:teme:01 [2026/03/04 14:35] (current)
radu.mantu [Memory access tracing]
Line 1: Line 1:
 ====== Assignment ====== ====== Assignment ======
- 
-<​hidden>​ 
  
 ===== 01. Overview ===== ===== 01. Overview =====
Line 13: Line 11:
 ==== Partner up ==== ==== Partner up ====
  
-Select a partner for this assignment and submit your choice via [[https://​forms.gle/​unnN3f8pksSbg85g9|this form]].+Select a partner for this assignment and submit your choice via [[https://​forms.gle/​unnN3f8pksSbg85g9|this form]]. \\ 
 +If you can't find a partner, try advertising on the [[https://​curs.upb.ro/​2025/​mod/​forum/​discuss.php?​d=3902|assignment forum]].
  
 <note important>​ <note important>​
-Only one student is required to complete the form on behalf of the team. +Only one student is required to complete the form on behalf of the team.\\ 
- +Only one student (not necessarily the same) will have to upload the assignment on moodle.\\
-Only one student (not necessarily the same) will have to upload the assignment on moodle. +
 You are **required** to work with a partner on this assignment. You are **required** to work with a partner on this assignment.
 </​note>​ </​note>​
Line 25: Line 22:
 ==== Usage ==== ==== Usage ====
  
-Your application should be implemented in C/C++ and take as positional arguments the commandline invocation of the program under test. For example, ''​./​my_tracer curl http://​example.com''​ will launch the tracer program that will then fork() & exec() **curl** and start monitoring its memory transactions at the same time. In case you need to add flags to your application,​ you can separate them from the child process' commandline ​with ''​%%--%%''​.+Your application should be implemented in C/C++ and take as positional arguments the commandline invocation of the program under test. For example, ''​./​my_tracer curl http://​example.com''​ will launch the tracer program that will then fork() & exec() **curl** and start monitoring its memory transactions at the same time. In case you need to add flags to your application,​ you can separate them from the commandline of the child process with ''​%%--%%''​.
  
 ==== Memory access tracing ==== ==== Memory access tracing ====
  
-Once the child process is up and running, you will have to monitor the **read** and **write** operations //​separately//​. Specifically,​ you will have to determine **what address has been accessed** and **what instruction ​has performed this access**. This can be achieved using [[https://​www.intel.com/​content/​www/​us/​en/​developer/​articles/​technical/​timed-process-event-based-sampling-tpebs.html|Intel Processor Event Based Sampling (PEBS)]], a mode of operation that will write detailed sample information in a physical memory ring buffer whenever the event counter triggers. You will not be required to interact with this system directly, but instead utilize the [[https://​man.archlinux.org/​man/​perf_event_open.2.en#​MMAP_layout|sampled mode]] of Linux Perf Events.+Once the child process is up and running, you will have to monitor the **read** and **write** operations //​separately//​. Specifically,​ you will have to determine **what address has been accessed** and **what instruction performed this access**. This can be achieved using [[https://​www.intel.com/​content/​www/​us/​en/​developer/​articles/​technical/​timed-process-event-based-sampling-tpebs.html|Intel Processor Event Based Sampling (PEBS)]], a mode of operation that will write detailed sample information in a physical memory ring buffer whenever the event counter triggers. You will not be required to interact with this system directly, but instead utilize the [[https://​man.archlinux.org/​man/​perf_event_open.2.en#​MMAP_layout|sampled mode]] of Linux Perf Events.
  
 ==== Mapping addresses to objects ==== ==== Mapping addresses to objects ====
Line 63: Line 60:
 ===== Grading ===== ===== Grading =====
  
-The deadline for this assignment is **11 May**. Upload a **zip archive** containing the source code, Makefile, documentation and any **micro-benchmarks** used in testing (don't go and include **redis** in your submission). The archive should be uploaded to this **moodle assignment ​(TODO)**.+The deadline for this assignment is **11 May**. Upload a **zip archive** containing the source code, Makefile, documentation and any **micro-benchmarks** used in testing (don't go and include **redis** in your submission). The archive should be uploaded to this [[https://​curs.upb.ro/​2025/​mod/​assign/​view.php?​id=135330|moodle assignment]].
  
-This assignment is worth **??p** of your final grade. The breakdown by task is as follows:+This assignment is worth **1.5p** of your final grade. The breakdown by task is as follows:
   * **Memory access tracing (30%):** If nothing else, the application can provably monitor memory accesses by printing the relevant information to //stdout//.   * **Memory access tracing (30%):** If nothing else, the application can provably monitor memory accesses by printing the relevant information to //stdout//.
   * **Mapping addresses to objects (30%):** The application should be able to generate statistics for both accessed data regions and code regions performing the accesses. Reads and writes must be treated separately.   * **Mapping addresses to objects (30%):** The application should be able to generate statistics for both accessed data regions and code regions performing the accesses. Reads and writes must be treated separately.
Line 73: Line 70:
 <note important>​ <note important>​
 The **first pair** that submits an assignment that receives **full marks** will automatically pass the exam with a maximum grade. The **first pair** that submits an assignment that receives **full marks** will automatically pass the exam with a maximum grade.
- 
-Up to **??p** bonus points can be awarded at the discretion of the teaching assistants for an exceptional implementation or evaluation. 
 </​note>​ </​note>​
  
-</​hidden>​+===== FAQ ===== 
 + 
 +:?:
ep/teme/01.1772626468.txt.gz · Last modified: 2026/03/04 14:14 by radu.mantu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0