Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multicore #255

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Multicore #255

wants to merge 2 commits into from

Conversation

Courtney3141
Copy link
Contributor

This PR adds two multicore configurations to the echo server - imx8mm_evk_4_cores and odroidc4_4_cores. The purpose of the changes to the surrounding files is to make the echo server easily generalise to single and multicore configurations.

The most significant changes are to the benchmark process benchmark.c. It has been restructured so that:

  • It is aware of which core it is running on
  • The PDs that it tracks are parametrised (not hard-coded)
  • It optionally signals the next benchmark process on another core to start to start and stop tracking
    The above parameters are obtained during initialisation by a call to the core_config file. The information is encoded in a core_config_t struct.

The rest of the changes aim to be the minimal required to support the change to the benchmarking process. They are:

  1. The addition of 2 extra system files for the new boards.
  2. Changes to utilization_socket.c to track the total and idle cycles of all cores which have PDs on them, rather than just one core.
  3. The addition of a new config file core_config.h that provides the benchmark processes and the utilization socket information about what PDs are in the system and what core they are on. Changing which PD is on which core is simply a matter of updating the pd_core_info array. Two core_config files are included - one for single core configurations, and one for the specific multicore configuration in the mutlicore system files.
  4. Since in a multicore configuration there needs to be one benchmark process per core, and the benchmark processes require access to the serial subsystem to output results, this means for a multicore system there are now 6 serial clients rather than 3. To avoid adding complexity to the serial config file, a new serial config file has been created that resides in a new serial_config_smp directory.
  5. Makefile changes incorporating the new boards and config files. When a multicore board is selected, the CONFIG_INCLUDE directories are appended with _smp to include the multicore config files.

When built in a single core board, both utilization_socket.c and the benchmark.c behave almost unchanged, but they have been restructured so that no changes are required to the files in a multicore configuration - only to the system file, core config file and serial config file.

Note that this PR is based off #254, and should be merged secondary to that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant