Skip to content

Conversation

yuxuan3713
Copy link
Collaborator

@yuxuan3713 yuxuan3713 commented Mar 21, 2020

CSE 291 Team 7 Final Report: State Management

Team 7: Tian Qiu and Yuxuan Liu

This branch contains creation of a state management subsystem for LegoOS. The implementation focus on service logic and concurrency control.

  • New syscalls for state operation.
  • p2m messaging and handling, passing state data across pComp and mComp.
  • p2mm messaging and handling, balancing load, enabling cross-pComp state access.
  • In memory data store (hash table with separate chaining) with concurrency control.

We have created user application (test_state.c) and performed test on two setups:

  • 1P-1M
  • 1P-3M-GMM

We provide documentation as well as sample configs for 1P-3M-GMM setting:

Changes and Usages

API usage:

state_save(char*, name, unsigned long name_size, unsigned long state_size, const void* state)
state_load(char* name, unsigned long name_size, unsigned long state_size, void* state)
state_check(char* name, unsigned long name_size)
state_delete(char* name, unsigned long name_size)

Reference to our testing file test_state.c for service invoking.

Kconfig options:

Processor side

  • CONFIG_USE_GMM=y enables gmm and p2mm messaging. If not set, pComp will use DEFAULT_MEMORY_NODE as target storage.
  • CONFIG_DEBUG_STATE=y enables debugging info on processor side. (/managers/processor/state.c)

Memory Side

  • CONFIG_GMM=y to enable GMM
  • CONFIG_GMM_NODEID=4 to set GMM node
  • CONFIG_DEBUG_STATE=y enables debugging info on memory side. (/managers/memory/handle_state.c)

Major file changes:

State Management README

Documentation/state/state-management.md

Sample configs for 1P-3M-GMM setup

Documentation/state/1P-3M-GMM-configs/1P-3M-GMM-Memory-1
Documentation/state/1P-3M-GMM-configs/1P-3M-GMM-Memory-2
Documentation/state/1P-3M-GMM-configs/1P-3M-GMM-Memory-3
Documentation/state/1P-3M-GMM-configs/1P-3M-GMM-Processor
Documentation/state/1P-3M-GMM-configs/fit_config.h
Documentation/state/1P-3M-GMM-configs/monitor_config.h

Added system entries

arch/x86/entry/syscalls/syscall_64.tbl
include/lego/syscalls.h
managers/memory/missing_syscalls.c

Defined four opcodes for state operation

include/lego/rpc/opcode.h

Defined state management related messaging struct

include/lego/rpc/struct_p2m.h
include/monitor/common.h

p2mm messaging entry and handling

linux-modules/monitor/include/gmm.h
linux-modules/monitor/gm_dispatcher/lego_gm_dispatcher.c
linux-modules/monitor/gmm/lego_gmm.c

Kconfig supporting state management with gmm

managers/memory/Kconfig
managers/processor/Kconfig

Added state management as a subsystem under managers

managers/memory/Makefile
managers/processor/Makefile

p2m messaging entry and handling

managers/processor/state.c
managers/memory/core.c
managers/memory/handle_state.c

Testing files

usr/test_state.c

@yuxuan3713 yuxuan3713 marked this pull request as ready for review March 21, 2020 04:53
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.

2 participants