Commit Graph

321 Commits

Author SHA1 Message Date
c2064c125e Run all finish() methods even after failures 2023-03-24 12:08:45 +00:00
2ebae042a8 Add ovnisync and install targets 2023-03-24 12:08:45 +00:00
4f49289bf5 Use warn() for warnings 2023-03-24 12:08:45 +00:00
80eb1f3bdd Detect large flushes (>10 ms) 2023-03-24 12:08:45 +00:00
933b0f48f9 Simplify burst stats 2023-03-24 12:08:45 +00:00
7dbd5d4228 Add missing error check for cpu_add_thread() 2023-03-24 12:08:45 +00:00
1e39bea929 Force return usage in cpu functions 2023-03-24 12:08:45 +00:00
334971d2dc Finish the traces even if model_finish fails 2023-03-24 12:08:45 +00:00
7731c090ee Run a propagation phase after connect 2023-03-24 12:08:45 +00:00
55c8af6b4d Use the model functions to simplify ovni model 2023-03-24 12:08:45 +00:00
02dbf0b993 Add warn() and info() debug macros 2023-03-24 12:08:45 +00:00
2eac823014 Add missing PCF thread types 2023-03-24 12:08:45 +00:00
b1e3cf7403 Add PRV_NEXT flag to auto-increment the channel value 2023-03-24 12:08:45 +00:00
1b30d5989c Remove unneeded memset in emu_ev() 2023-03-24 12:08:45 +00:00
01153d3d2c Reuse player stream clock 2023-03-24 12:08:45 +00:00
722e32617a Only run dead thread check on complete emulation 2023-03-24 12:08:45 +00:00
a1cc8ba87c Check correct thread state at finalization
Prevents external threads from being left in Running state when they
finish, causing the virtual CPU to be always occupied with at least one
thread. This situation causes the virtual CPU to never report any
subsystem.
2023-03-24 12:08:45 +00:00
b5eb652580 Change wording for finish message 2023-03-24 12:08:45 +00:00
a49555fe46 Fail with wrong thread execute payload
Otherwise it produces a segfault.
2023-03-24 12:08:45 +00:00
7f82aa08f8 Remove duplicate ovniemu prefix in stats 2023-03-24 12:08:45 +00:00
2ae702e3e4 Remove unused cpu flush channel
This channel is now controlled by the ovni model.
2023-03-24 12:08:45 +00:00
b98ccfe3ad Use row and type as identifiers in prv_register()
Prevents multiple channels from being accidentally set to the same row
with the same type.
2023-03-24 12:08:45 +00:00
0447c52f0b Use strtol to parse the TID 2023-03-24 12:08:45 +00:00
2f3dcbed1f Return error on enforce_task_rules for nanos6 2023-03-24 12:08:45 +00:00
7ba810fd4a Set the thread->proc in proc_add_thread() 2023-03-24 12:08:45 +00:00
e33d6b9158 Load old streams too 2023-03-24 12:08:45 +00:00
49743d4b9e Add path_filename() 2023-03-24 12:08:45 +00:00
ce4552add5 Remove old code 2023-03-24 12:08:45 +00:00
69e8f5ba12 Print a message while flushing the traces 2023-03-24 12:08:45 +00:00
b265442b8c Mark select channel as dirty on mux_init()
Ensures that the select callback will be called on the propagation
phase, immediately setting the right output. Otherwise the mux won't be
updated until the select channel sets a new value.
2023-03-24 12:08:45 +00:00
2b84318ebe Allow channels to be marked as dirty 2023-03-24 12:08:45 +00:00
d34a25a62d Delay connect() until first event
Prevents enabling more channels than required until we observe an event
of that model. Ideally we should implement this logic in the probe hook
when the models can report if they are being used in the metadata.
2023-03-24 12:08:45 +00:00
8310127e78 Improve stat reporting 2023-03-24 12:08:45 +00:00
b9cc81fc52 Fix progress computation
Cannot use stream progress individually as their sizes are different.
2023-03-24 12:08:45 +00:00
c709938206 Reorder stream struct to reduce misses 2023-03-24 12:08:45 +00:00
626aa84814 Stop the emulation on ^C and finish the traces 2023-03-24 12:08:45 +00:00
9d7ff947b1 Get the first input cleanly 2023-03-24 12:08:45 +00:00
9d3fe80e93 Use track_get_output instead 2023-03-24 12:08:45 +00:00
e0842bde74 Update PRV bay callback call 2023-03-24 12:08:45 +00:00
bc901f58c2 Update model_thread tracking 2023-03-24 12:08:45 +00:00
70ad9e86aa Connect CPU to thread channels directly
Avoids double updating of the tracking mux, as the CPU mux already
implements the filtering and select operations.
2023-03-24 12:08:45 +00:00
c43caccfd4 Create only one tracking mode per channel 2023-03-24 12:08:45 +00:00
5961c4fa96 Allow bay callbacks to be enabled and disabled 2023-03-24 12:08:45 +00:00
fe6db823a7 Index mux inputs by an integer 2023-03-24 12:08:45 +00:00
c72f71e61e Reorder chan struct to reduce cache misses 2023-03-24 12:08:45 +00:00
2d8b68bff2 Link processes and CPUs with the loom 2023-03-24 12:08:45 +00:00
54cf4d3409 Use the logical index for now 2023-03-24 12:08:45 +00:00
3cc3d831f5 Report speed and remaining time too 2023-03-24 12:08:45 +00:00
3da9e27190 Skip "loom." prefix from hostname 2023-03-24 12:08:45 +00:00
e22e6a21e0 Update subsystem on nested tasks
Also check the return value of update_task_channels().
2023-03-24 12:08:45 +00:00
10de4c8f09 Specify channels with duplicated values 2023-03-24 12:08:45 +00:00
2d05fbaeea Disable debug log from ovni event 2023-03-24 12:08:45 +00:00
4fb77610d2 Disable debug log from model 2023-03-24 12:08:45 +00:00
a654527e32 Trim extra slashes from trace directory 2023-03-24 12:08:45 +00:00
6b132f243e Print duplicated value on error 2023-03-24 12:08:45 +00:00
e3339fef3b Increase sort window 2023-03-24 12:08:45 +00:00
c6860854b4 Allow ovnidump to load unsorted traces 2023-03-24 12:08:45 +00:00
2fbf022823 Ignore config copy error 2023-03-24 12:08:45 +00:00
f2b6db6a08 Print emulation progress 2023-03-24 12:08:45 +00:00
0a9530dc6d Remove semicolon from error macros 2023-03-24 12:08:45 +00:00
f76d160c69 Copy Paraver configs to output directory 2023-03-24 12:08:45 +00:00
819f767dbd Use constant expression for the model_id
Fixes gcc 6.5.0
2023-03-24 12:08:45 +00:00
451d4be386 Port ovnisort 2023-03-24 12:08:45 +00:00
61b0efee34 Allow streams to step over unsorted events 2023-03-24 12:08:45 +00:00
2c5cfbb467 Port the kernel model 2023-03-24 12:08:45 +00:00
1bf5049567 Remove unused includes and enums 2023-03-24 12:08:45 +00:00
ada4525e85 Remove boilerplate from nodes model 2023-03-24 12:08:45 +00:00
3c0521f936 Remove boilerplate from nosv model 2023-03-24 12:08:45 +00:00
cd39230089 Remove boilerplate from the models 2023-03-24 12:08:45 +00:00
819b9aefa7 Add missing stdarg.h include 2023-03-24 12:08:45 +00:00
de8439c55b Remove deprecated CHAN_ROW property 2023-03-24 12:08:45 +00:00
1b82415ce2 Remove old NODES model 2023-03-24 12:08:45 +00:00
02db4b6369 Add support for NODES 2023-03-24 12:08:45 +00:00
d48c9758bc Remove old nOS-V model 2023-03-24 12:08:45 +00:00
e471930fd5 Use the track module in nOS-V too 2023-03-24 12:08:45 +00:00
259de4df43 Add track module and port Nanos6 model 2023-03-24 12:08:45 +00:00
09f58610ec Port ovnidump using the trace and player modules
The -t option is now dropped as only the binary streams found in the
specified directory are dumped. A single binary stream can be also
dumped in the same way.

The relative path is prefixed, so we avoid the collision problem when
filtering TIDs from multiple nodes.
2023-03-24 12:08:45 +00:00
1ac276a220 Allow empty relpath in stream_load 2023-03-24 12:08:45 +00:00
8727126551 Use .obs extension for ovni binary streams 2023-03-24 12:08:45 +00:00
0746d2a0ec Add CPU oversubscription test 2023-03-24 12:08:45 +00:00
a818795d88 Add support for nOS-V
Most of the model is taken from nanos6, we should refactor them.
2023-03-24 12:08:45 +00:00
55a5be7d13 Document linter mode in ovniemu usage 2023-03-24 12:08:45 +00:00
99fe0c4311 Add support for paraver row files 2023-03-24 12:08:45 +00:00
f1b130eb39 Move paraver sources to pv/ 2023-03-24 12:08:45 +00:00
a91b1c554a Finish task types in PCF for nanos6 2023-03-24 12:08:45 +00:00
dbea90f525 Fail if the streams clock is too far apart
The current gate is set to 1 hour and it only checks the first event in
the stream. Added a test too.
2023-03-24 12:08:45 +00:00
c5aa784caa Reset ret after reading the last event 2023-03-24 12:08:45 +00:00
4a08add5ab Add missing memory category in switch 2023-03-24 12:08:45 +00:00
e674c92f13 Enable emu and rt tests for nanos6 and ovni 2023-03-24 12:08:45 +00:00
4e2164646c Add PCF information for nanos6 2023-03-24 12:08:45 +00:00
c94a786c1e Use EXT() macro instead of extend_get() 2023-03-24 12:08:45 +00:00
2a12af8e56 Rename pcf_file to pcf 2023-03-24 12:08:45 +00:00
553e51741a Use enum for tracking modes 2023-03-24 12:08:45 +00:00
e3880d178e Move flush channel to ovni model only 2023-03-24 12:08:45 +00:00
9041583207 Add support for multiple models 2023-03-24 12:08:45 +00:00
123178c340 Remove emu prefix from player 2023-03-24 12:08:45 +00:00
8ed9063488 Remove emu prefix from trace and stream 2023-03-24 12:08:45 +00:00
242ea71ee6 Remove old nanos6.c and ovni.c 2023-03-24 12:08:45 +00:00
2c43a6c155 Move ust model back to ovni 2023-03-24 12:08:45 +00:00
9202085267 Remove tampi and openmp outdated models 2023-03-24 12:08:45 +00:00
cc5582c493 Split nanos6 model into separate files 2023-03-24 12:08:45 +00:00
4a8255e227 Complete Nanos6 model 2023-03-24 12:08:45 +00:00
524ccc4dd5 Begin porting nanos6 model 2023-03-24 12:08:45 +00:00
070c0f5e24 Remove ust directory 2023-03-24 12:08:45 +00:00
04029995be Begin porting the ovni model 2023-03-24 12:08:45 +00:00
12bfd3fe26 Add loom and proc 2023-03-24 12:08:45 +00:00
f5db3a9814 Add cpu module and begin ovni model 2023-03-24 12:08:45 +00:00
5de74f15cb Add emulator player to read events 2023-03-24 12:08:45 +00:00
aad925ffca Update CMakeLists for emu 2023-03-24 12:08:45 +00:00
e1880e09f6 Read clock offsets in emu_system 2023-03-24 12:08:45 +00:00
183df35459 Use emu_args to parse input arguments 2023-03-24 12:08:45 +00:00
0687197f08 Initialize trace to zero 2023-03-24 12:08:45 +00:00
9a4af7e0ec Add offset setter in streams 2023-03-24 12:08:45 +00:00
d6f9ed7125 Split clkoff initialization 2023-03-24 12:08:45 +00:00
b4d5e33d6c Add emu_args parser 2023-03-24 12:08:45 +00:00
fe5f16bb7a Add clock offset parser 2023-03-24 12:08:45 +00:00
894e972a65 Link threads and streams 2023-03-24 12:08:45 +00:00
f4e8b0b8a8 Load CPUs in emu_system 2023-03-24 12:08:45 +00:00
fb06a3ec32 Add new emulator 2023-03-24 12:08:45 +00:00
bac907dba0 Remove old emulator code 2023-03-24 12:08:45 +00:00
382cd7a371 Add ARRAYLEN macro 2023-03-24 12:08:45 +00:00
a4f235dd97 Add .ovnistream suffix to streams 2023-03-24 12:08:45 +00:00
b3e6c21b7c Add unit tests for emu and emu_trace 2023-03-24 12:08:45 +00:00
aafc3471cc Add emu_system to parse the trace hierarchy 2023-03-24 12:08:45 +00:00
c6a5e3b34d Independize trace from the emulator 2023-03-24 12:08:45 +00:00
183634c8c4 Pass the bay in the prv_register() function 2023-03-24 12:08:45 +00:00
b3b1164fed Add PRV trace support for patchbay channels 2023-03-24 12:08:45 +00:00
d394bb88c3 Fail when the return value is not used 2023-03-24 12:08:45 +00:00
e240937e58 Add multiple callback types in the patchbay 2023-03-24 12:08:45 +00:00
9928758f91 Test bay_find speed compared with direct access 2023-03-24 12:08:45 +00:00
36d0a44b57 Add bay_remove() 2023-03-24 12:08:45 +00:00
97b96801d1 Ensure mux channels are registered in the bay 2023-03-24 12:08:45 +00:00
f40a0a8d12 Prevent propagation loops 2023-03-24 12:08:45 +00:00
227a2d91df Allow duplicates in the mux output channel 2023-03-24 12:08:45 +00:00
9cc563d0dd Add properties to channels and duplicate support 2023-03-24 12:08:45 +00:00
0944f84ac9 Allow dirty writes selectively 2023-03-24 12:08:45 +00:00
e1e0e9662d Pack the value structure to be hashable 2023-03-24 12:08:45 +00:00
1cea193ea3 Add support for patchbay and muxes 2023-03-24 12:08:45 +00:00
d34e0baa17 Ignore Nanos6 progress events 6P* 2023-03-20 20:45:21 +01:00
5a9f667553 Use snprintf() and check for buffer overflow 2022-12-19 15:24:34 +01:00
5a982d61c9 Build parson with PIC 2022-12-19 15:24:34 +01:00
ee462d92e8 Handle NULL version pointer 2022-12-16 13:34:31 +01:00
7c7ba729f5 Add unit test for the version parser 2022-12-16 13:34:31 +01:00
d3ce4a8765 Store the process directory in proc->dir 2022-12-16 13:33:03 +01:00
5404cc5e83 Split sources into src/emu and src/rt
The public includes are now in include/ and in internal includes in
src/include/. The ovni* tools are moved to emu/ovni*.c and liked with
the emu static library.
2022-12-16 13:31:31 +01:00
b6ce54b7ee Add version check and soname for libovni
Adds ovni_version_check() to test the version at runtime, set the
SONAME to the major version and install a symlinks to the complete
version:

  libovni.so -> libovni.so.1
  libovni.so.1 -> libovni.so.1.0.0
  libovni.so.1.0.0
2022-12-13 13:11:44 +01:00
df169c89c3 Use RPATH for the MPI library 2022-11-15 10:12:59 +01:00
b1b4f37032 Copy Paraver configs into the trace directory
Keeps the trace self-contained.
2022-11-09 16:09:33 +01:00
58286dbd1a Fix average computation in burst stats 2022-10-07 13:10:05 +02:00
22b34dcff6 Fix unsigned format 2022-10-07 12:46:33 +02:00
2497e71f81 Fix nback limit to detect full ring 2022-10-07 12:43:52 +02:00
75bc02bccd Fix sorting without previous events 2022-10-07 12:17:59 +02:00
b8e521b49c Print info when reaching the end of sort window 2022-10-07 11:22:29 +02:00
035791ff54 Increase ovnisort window to 100k events 2022-10-07 11:02:42 +02:00
37a636f387 Fix ovnisort check too 2022-10-07 11:02:03 +02:00
362c47553b Fix ovnisort handling of last event 2022-10-07 09:38:20 +02:00
29406ca629 Fix TID and PID suffix in PCF 2022-10-05 15:56:26 +02:00
c1b2cf600c Fix Nanos6 thread type suffix in the PCF 2022-10-05 14:52:24 +02:00
e9d977210b Fix main task colors too 2022-10-04 11:44:19 +02:00
22233c6431 Copy events when updating CPU tracking channels 2022-10-03 10:56:09 +02:00
68a3daffe2 Add chan_copy 2022-10-03 10:55:58 +02:00
3f3c3c8f34 Reduce progress verbosity 2022-09-30 12:09:38 +02:00
a9c3d016ed Show median in burst stats 2022-09-30 12:09:19 +02:00
404182c5fa Improve emulation progress info
Now the progress shows 100% when the emulation ends.
2022-09-30 11:49:05 +02:00
99793dba10 Set continuation indent to 2 tabs 2022-09-30 10:25:09 +02:00
994f5f2098 Fix burst message 2022-09-29 18:43:23 +02:00
da1af8c133 Declare and set variables close to usage 2022-09-29 18:35:41 +02:00
73aa7887ae Avoid clang-format in pcf tables 2022-09-29 18:34:57 +02:00
8370c33194 Remove ovni2prv
No longer used and may be confused with ovniemu
2022-09-29 18:09:54 +02:00
06823a6e69 Print burst stats 2022-09-29 18:03:16 +02:00
ca6d46698f Move sources to src 2022-09-29 16:52:30 +02:00