c13d57f0f6
Fix for nOS-V with ovni.level=2
...
When running without all the subsystem events enabled in nOS-V, it is
possible to emit two consecutive VTx events, which would push twice the
same value ST_TASK_BODY into the subsystem channel. This change relaxes
the subsystem channel to accept duplicate stacked values. A regression
test is also added.
Reported-By: Raúl Peñacoba Veigas <raul.penacoba@bsc.es>
2023-11-14 17:26:43 +01:00
4b4f1bd218
Don't modify nOS-V subsystem state on task pause
...
In nOS-V, when a task was paused via the VTp event, two things were
happening: 1) the task state was set to pause and 2) the subsystem state
"Task: Running" was being popped.
This causes a problem when a task calls nosv_submit() in blocking mode,
as it will call nosv_pause() which will emit a VTp event from a
subsystem different than "Task: Running".
To solve this conflict, we handle the subsystems state and the task
state separately with the VTp and VTr events. The subsystem state "Task:
Running" no longer is connected to the state of the task and only shows
if we entered the body of the task or not. It has now been renamed to
"Task: In body".
The new state "Task: In body" represents that the task body has begun
the execution and is still in the stack, but the task may be paused. The
subsystem is not changed by the VTp (pause) or VTr (resume) events.
Fixes: https://pm.bsc.es/gitlab/rarias/ovni/-/issues/128
2023-10-23 11:26:17 +02:00
0df018cf5f
Fix segfault reading empty streams
...
The check_clock_gate() was trying to access to the first event in all
streams. However, streams that are empty don't have any event, so they
cause a NULL dereference. Skipping not active streams avoids the
problem.
2023-10-23 10:07:44 +02:00
Kevin Sala
7b4ebca002
Add OVNI_TRACEDIR envar to change trace directory
...
This commit introduces the OVNI_TRACEDIR environment variable to change
the directory where traces are generated. By default, when the envar is
not defined, the trace is still generated in the ovni directory. The
envar can take a trace directory name, a relative path to the directory,
or its absolute path. In the first case, the directory is created in the
current path $PWD.
Both libovni (rt) and ovnisync read this environment variable.
2023-10-23 07:49:28 +00:00
Kevin Sala
24252ebbb3
Use common's progname functions in ovnisync
...
This commit adds the progname_get function in common.h header and
extends the ovnisync tool to use them
2023-10-23 07:49:28 +00:00
Kevin Sala
9a628e78ca
Add MPI model with interface view
2023-09-06 18:11:18 +02:00
Kevin Sala
276afd5479
Add TAMPI model with subsystems view
2023-08-22 18:13:29 +02:00
Kevin Sala
9269dd7202
Add nosv create and destroy API subsystem states
2023-08-17 13:23:59 +02:00
a3ffb2443a
Report the commit too with ovniver
2023-07-26 17:13:28 +02:00
bf8a2213c1
Add the ovniver program to report the version
2023-07-26 16:31:56 +02:00
97c936d41f
Add ovni_version_get() function
...
Allows the reding the version of the libovni.so currently loaded.
2023-07-26 16:31:30 +02:00
f08595b3a7
Report open error for missing trace directory
2023-07-26 13:51:35 +02:00
f8c6b7c7c0
Improve the version error message
...
Use the terminology want/got to determine which version the user is
requested and the version the library provides.
2023-07-25 19:55:51 +02:00
48df02f102
Always use the project version
...
Don't duplicated versions so we avoid the problem of missing one
instance to be updated.
2023-07-07 10:42:40 +02:00
ee9111a1ec
Move ovni.pc.in into src/
2023-07-05 13:13:53 +02:00
4abd92e139
Make ovni.h a public header of ovni target
2023-07-05 13:11:18 +02:00
cd2e844066
Use the installation directories provided by cmake
...
Some systems will define the library path as lib64. Also update other
install commands to use the values discovered by the GNUInstallDirs
module.
2023-07-05 12:52:56 +02:00
5a9086e6d1
Fix ovnisort with flush events
...
Sort the events in the sorting region before injecting them back in the
stream. This solves the problem with flush events OF[ and OF].
2023-06-29 13:25:15 +02:00
05979df34d
Install ovnitop.1 into man1 subdirectory
2023-06-02 17:12:17 +02:00
d9b82494d0
Free the table at the end in ovnitop
2023-06-01 18:38:26 +02:00
c1b0768e7d
Add ovnitop(1) manual page
2023-05-31 17:23:25 +00:00
553d0a1c62
Add ovnitop command
2023-05-31 17:23:25 +00:00
44d120d7a8
Version 1.2.0
2023-05-01 09:19:05 +02:00
c2b6bfd3a8
Set the size of the channel property arrays
...
Arrays which don't initialize the last elements of the enumeration are
shorter and will cause a buffer overflow when read in a loop.
2023-04-24 12:37:20 +02:00
a8944b3763
Fix buffer overflow in sort_replace()
...
The access to the array was done before the out of bound check.
2023-04-24 11:47:46 +02:00
49f915fda5
Add FIXME notice for taskiter support
...
Set the task->thread to NULL if we re-execute a task from the Dead
state, so it follows the behavior of a Created task.
2023-04-17 15:58:19 +00:00
David Alvarez
26d01d18eb
Support taskiter by allowing tasks to re-launch
2023-04-17 15:58:19 +00:00
1ec6f799f1
Add missing label for sponge state
2023-04-14 13:39:37 +00:00
b16c30a5e6
Add Absorbing state to the idle view in Nanos6
2023-04-14 13:39:37 +00:00
6cafd347ce
Add support for sponge subsystem state in Nanos6
2023-04-14 13:39:37 +00:00
171e439bd4
Allow builds without MPI with -DUSE_MPI=OFF
2023-04-14 11:27:30 +00:00
6eead7e28e
Warn if some looms don't have the rank
...
Fallback to sorting by loom name instead.
2023-04-14 12:13:49 +02:00
bfff1a815e
Don't set rank_min multiple times
2023-04-14 12:01:47 +02:00
9568d4f379
Inform the user of the sorting method selected
2023-04-14 08:35:21 +00:00
676e30b4ca
Order looms and processes by rank if given
2023-04-14 08:35:21 +00:00
80b8b209fa
Skip repeated hostnames in ovnisync
2023-04-06 17:52:28 +02:00
9e105413fd
Replace brk with breakdown
2023-04-06 17:38:37 +02:00
602daabe23
Fix copyright years
2023-04-06 15:33:15 +00:00
7aa3434e79
Remove ENABLE_DEBUG comments
2023-04-06 15:33:15 +00:00
29a7011141
Consider the -b option experimental
2023-04-06 15:33:15 +00:00
999a79b074
Run Nanos6 connect hook at init for breakdown
2023-04-06 15:33:15 +00:00
1c82470bfc
Remove initial subsystem by default
2023-04-06 15:33:15 +00:00
b17ff6d166
Add unknown subsystem state for Nanos6
2023-04-06 15:33:15 +00:00
1582a60522
Set tr mux output to unknown subsystem on NULL
2023-04-06 15:33:15 +00:00
a827113c2a
Increasing breakdown row padding to match CPU
2023-04-06 15:33:15 +00:00
881e556e06
Fix pcf_sdd_value() return check
2023-04-06 15:33:15 +00:00
cc09920c80
Remove unused i variable in emu/nanos6/breakdown.c
2023-04-06 15:33:15 +00:00
6711afdb58
Fix include headers following IWYU
2023-04-06 15:33:15 +00:00
5b64737ad9
Fix pcf_labels type
2023-04-06 15:33:15 +00:00
30f68ea5df
Add missing headers
2023-04-06 15:33:15 +00:00
467cc9aa7e
Fix value_str() usage
2023-04-06 15:33:15 +00:00
e287087d3b
Use delta per stream in ovnidump
2023-04-06 15:33:15 +00:00
35de33e0f9
Add support for Nanos6 progress events
2023-04-06 15:33:15 +00:00
0134ceee9d
Write .pcf and .row files for the breakdown
2023-04-06 15:33:15 +00:00
e838d687f0
Add missing Busy label
2023-04-06 15:33:15 +00:00
a90768c1d4
Add partial support for the breakdown model
...
For now only Runtime and Task breakdown trees are implemented. The Idle
state is not decomposed.
2023-04-06 15:33:15 +00:00
6b8099b6af
Make the emulator extensible
2023-04-06 15:33:15 +00:00
35872354e0
Speedup the sort module
...
Improvements:
- Don't propagate values if they didn't change
- Use custom sort algorithm to speedup the sorting
- Allocate a contiguous array of channel outputs
2023-04-06 15:33:15 +00:00
1909d8106c
Allow the select channel as input in a mux
...
Required to implement the tr channel in the breakdown model. See
https://pm.bsc.es/gitlab/rarias/ovni/-/issues/101
2023-04-06 15:33:15 +00:00
c624374cc8
Allow mux to specify the default value
...
Will be written to the output when the selection function returns NULL
as the selected input.
2023-04-06 15:33:15 +00:00
920866d8af
Print remaining time with 0.1 second precision
2023-04-06 15:33:15 +00:00
4b053b9a38
Clear average line and increase elapsed precision
2023-04-06 15:33:15 +00:00
4f440c5104
Add some debug messages
2023-04-06 15:33:15 +00:00
f3bcdeccd1
Move chan_read() to a inline function in chan.h
2023-04-06 15:33:15 +00:00
43fa556fa9
Enable debug messages with -d
...
Allows the user to easily enable debug messages, which are the only way
to debug problems with channels.
2023-04-06 15:33:15 +00:00
31f24a2a55
Add breakdown option
2023-04-06 15:33:15 +00:00
029e185c6c
Reserve first 1000 values for states
...
The task type hash starts at 1000, so we don't collide with states.
2023-04-06 15:33:15 +00:00
70b29b6459
Add sort channel module
...
Sorts the N input values and writes them in the N outputs in order.
2023-04-06 15:33:15 +00:00
a4ce0e2a1e
Add Idle view in Nanos6
2023-04-06 15:33:15 +00:00
5c5f9f0f1a
Use int64_t to represent the offset
...
Using size_t causes undefined behavior when the number is negative.
2023-04-05 12:47:36 +02:00
34a823f36d
Fix ovnisort check operation
...
The stream_step() function will return 1 when reaching the end of the
stream, making the check return non-zero in each stream, even if all the
events have a monotonically increasing clock.
2023-03-24 12:08:45 +00:00
3d8e2000fd
Don't use err() for non-error messages
2023-03-24 12:08:45 +00:00
f35741bac7
Allow setting the lock back limit in ovnisort
2023-03-24 12:08:45 +00:00
a04fc71ae9
Increase libovni version in CMakeLists.txt too
2023-03-24 12:08:45 +00:00
7827ef58e1
Fix minor version check
2023-03-24 12:08:45 +00:00
d86d5fec5f
Fix overflow error for value_nextbuf
2023-03-24 12:08:45 +00:00
7f63d1e048
Remove unused thread_select_any() function
2023-03-24 12:08:45 +00:00
0041738578
Add optimization comment in stream_cmp
2023-03-24 12:08:45 +00:00
266b1638d4
Count the number of physical CPUs too
2023-03-24 12:08:45 +00:00
2c09e40c44
Use info() for information messages
...
Prefix err() messages with "ERROR:" too.
2023-03-24 12:08:45 +00:00
76efd7c216
Add FIXME notice in mux select chan_dirty()
2023-03-24 12:08:45 +00:00
d20483ed13
Fix compat.c headers
2023-03-24 12:08:45 +00:00
848a1de963
Constraint _GNU_SOURCE in compat.c only
2023-03-24 12:08:45 +00:00
ddbb7dd9f4
Add include-what-you-use
...
Adds forwards declarations in headers and includes all headers in
sources, even if they are found by transitive includes.
2023-03-24 12:08:45 +00:00
e471df9c1a
Add ovniemu version
2023-03-24 12:08:45 +00:00
740d8b0d4b
Only allow one rank per host in ovnisync
2023-03-24 12:08:45 +00:00
f22d9084ba
Ensure all looms have at least one CPU
2023-03-24 12:08:45 +00:00
3d957f444c
Only ignore clock table on ENOENT
2023-03-24 12:08:45 +00:00
648411c686
Remove trailing new line in err() and die()
2023-03-24 12:08:45 +00:00
3f44be9f2f
Include path.h for loom.c
2023-03-24 12:08:45 +00:00
91957b4ed6
Remove commented code in loom.c
2023-03-24 12:08:45 +00:00
9a0d0df33d
Use path_has_prefix in loom.c
2023-03-24 12:08:45 +00:00
7772541f7d
Remove commented code in emu_stat.c
2023-03-24 12:08:45 +00:00
ad88e25278
Remove track mode argument from cpu_get_th_chan()
2023-03-24 12:08:45 +00:00
9a4a4a0005
Remove bay_remove()
2023-03-24 12:08:45 +00:00
5a03fd49e9
Remove function prefix from err()
2023-03-24 12:08:45 +00:00
9cb752e102
Emit warning when cfg directory exists
2023-03-24 12:08:45 +00:00
2e91d29ae9
Check fwrite return value
2023-03-24 12:08:45 +00:00
9304e84262
Fix spaces in ovni/setup.c
2023-03-24 12:08:45 +00:00
2be46393e1
Merge process_ev into model_ovni_event
2023-03-24 12:08:45 +00:00
06c250500c
Warn when median burst time exceeds 100 ns
2023-03-24 12:08:45 +00:00
7b0d446b02
Add payload size checks for affinity events
2023-03-24 12:08:45 +00:00
9b209fab20
Remove spaces from kernel/setup.c
2023-03-24 12:08:45 +00:00
5556c521a0
Simplify context switch logic
2023-03-24 12:08:45 +00:00
74f253b575
Ignore Nanos6 progress events
2023-03-24 12:08:45 +00:00
96cfd6247e
Remove switch in prv emit
2023-03-24 12:08:45 +00:00
9de0b18db2
Merge is_dup condition
2023-03-24 12:08:45 +00:00
38ebc3afce
Protect return value with USE_RET
2023-03-24 12:08:45 +00:00
9572d79f72
Remove PRV_SKIPNULL flag
2023-03-24 12:08:45 +00:00
4a2a9ec685
Replace uses of die() with err() + return
2023-03-24 12:08:45 +00:00
0bdfea309a
Simplify pcf_labels type
2023-03-24 12:08:45 +00:00
eaafd916be
Fix wrong malloc error message
2023-03-24 12:08:45 +00:00
6deef0308a
Fix underflow in path_remove_trailing()
2023-03-24 12:08:45 +00:00
8da0342760
Set thread and CPU channels to ignore duplicates
...
Some of the PRV channels no longer need to skip duplicates.
2023-03-24 12:08:45 +00:00
e625897766
Add CHAN_IGNORE_DUP to ignore duplicates
2023-03-24 12:08:45 +00:00
ab3e823134
Rename CHAN_DUPLICATES to CHAN_ALLOW_DUP
2023-03-24 12:08:45 +00:00
7fba5cbdcc
Use a common variable to define the loom prefix
2023-03-24 12:08:45 +00:00
411ea962ff
Don't assume chan value is int64 in chan_pop()
2023-03-24 12:08:45 +00:00
f61711047c
Remove buffer argument from value_str()
...
Use a ring of buffers instead, so we can printf() up to 16 values in
the same call.
2023-03-24 12:08:45 +00:00
36bf4250f3
Remove die() usage from track.c
2023-03-24 12:08:45 +00:00
f957461c92
Fix emit comment in bay.c
2023-03-24 12:08:45 +00:00
6c7b64f7f2
Use memcmp() in value_is_equal()
2023-03-24 12:08:45 +00:00
2442d5decb
Use 64 bit for type member in struct value
...
Now all the members are aligned to 64 bits, and there is no need to pack
the structure.
2023-03-24 12:08:45 +00:00
82f1cc287d
Update copyright years to 2021-2023
2023-03-24 12:08:45 +00:00
6f31af0612
Remove ovni prefix from pcf.h guards
2023-03-24 12:08:45 +00:00
dc2a016c6b
Add missing checks of return value
2023-03-24 12:08:45 +00:00
a0a70b1ffc
Ensure the return value is used
2023-03-24 12:08:45 +00:00
30761c266b
Emit the rank too when switching Nanos6 tasks
...
The task type and rank are allowed to emit PRV duplicates.
2023-03-24 12:08:45 +00:00
31b2ef5ffe
Emit the appid and type in nosv task switch
...
Duplicates are allowed in the PRV for the task type, appid and rank, as
we may switch to inline if0 tasks with the same values.
2023-03-24 12:08:45 +00:00
17a0d241f6
Prefix model functions to prevent clashes
2023-03-24 12:08:45 +00:00
c508929835
Export the function to get the gid from a label
2023-03-24 12:08:45 +00:00
68690b4127
Define all static PRV types in a global enum
2023-03-24 12:08:45 +00:00
55624d4c68
Remove commented code from system.h
2023-03-24 12:08:45 +00:00
8c509475f9
Fix dbg() call
2023-03-24 12:08:45 +00:00
c39e75a8d5
Always compile dbg() statements
2023-03-24 12:08:45 +00:00
53c10aab2d
Reuse ARRAYLEN() from common.h
2023-03-24 12:08:45 +00:00
d432595c7d
Remove commented pcf code
2023-03-24 12:08:45 +00:00
a24477629d
Set PRV flags explicitly per channel
...
Added PRV_EMITDUP and PRV_SKIPDUP to allow the check to be skipped. By
default it will fail to emit duplicated values.
2023-03-24 12:08:45 +00:00
48cd4de92e
Use active thread for nodes subsystem
...
There is no reason to hide the thread (in the thread timeline) when
enters in Cooling or Warming states, as it won't cause any
oversubscription problem. CPU channel is still kept to track the running
thread.
2023-03-24 12:08:45 +00:00
15e1a5a0e9
Expand last stat message with event count
2023-03-24 12:08:45 +00:00
1d9d592b63
Fix context switch channel name
2023-03-24 12:08:45 +00:00
6039bf73c7
Ignore init time for speed stats
2023-03-24 12:08:45 +00:00
e907474ea9
Avoid double copy of mcv in emu_ev
2023-03-24 12:08:45 +00:00
c55a92872b
Remove unused appid cpu channel
...
A similar channel is used in nosv model to report the appid of the
running task.
2023-03-24 12:08:45 +00:00
038498846e
Use running thread for CPU context switches
2023-03-24 12:08:45 +00:00
8bf5d8c571
Fail gracefully when a unknown stream is found
2023-03-24 12:08:45 +00:00
0eb88af4b9
Use the CPU phyid for the name only
...
The logical index is used to change the affinity of the threads.
2023-03-24 12:08:45 +00:00
e0adf2f4a5
Don't run linter tests when interrupted
2023-03-24 12:08:45 +00:00
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