![arch](https://private-user-images.githubusercontent.com/40686366/332797033-0e600853-c2d2-44dc-83cb-4a6904f63019.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwOTEzODUsIm5iZiI6MTczOTA5MTA4NSwicGF0aCI6Ii80MDY4NjM2Ni8zMzI3OTcwMzMtMGU2MDA4NTMtYzJkMi00NGRjLTgzY2ItNGE2OTA0ZjYzMDE5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4NTEyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFhZDVmZDllNDkwM2Q0Y2FlNmJiMGM3Y2MwOTFlY2U2Yzc4ZjlkM2FiMDQ5OWVlNjAyMmZlYjYwYjBmZTY5NGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Sid8rbyiFezK2BsLFsa5UkCUeto2HSORVm_C0BqUZvE)
wamrc --opt-level=3 --threshold-bits=16 --disable-aux-stack-check --enable-counter-loop-checkpoint -o bc.aot bench/bc.aot
./MVVM_checkpoint -t bench/bc.aot -a -g20,-n1000
./MVVM_restore -t bench/bc.aot
Policy for wamrc
- counter loop checkpoint
--enable-counter-loop-checkpoint
- loop threshold for 1 << x per checkpoint
- loop checkpoint
--enable-loop-checkpoint
, meaning without the counter to checkpoint - loop dirty checkpoint
--enable-loop-dirty-checkpoint
, meaning use the dirty bit to checkpoint --enable-checkpoint
, enable function level checkpoint
First comment out the following in checkpoint.cpp
wamr->get_int3_addr();
wamr->replace_int3_with_nop();
wamr->replace_mfence_with_nop();
Then
python3 ../artifact/common_util.py # return $recv is 193
SPDLOG_LEVEL=debug ./MVVM_checkpoint -t test/tcp_client.aot -f 193 -c 0 -x 10 -a "10" -e OMP_NUM_THREADS=1 -i
SPDLOG_LEVEL=debug ./MVVM_restore -t test/tcp_client.aot # All the wasi env will be restored
- -t Target: The path to the WASM interpreter or AOT executable
- -i Debug Mode: Switch on for debugging
- -f Function: The function to stop and checkpoint
- -x Function Counter: The WASM function counter to stop and checkpoint
- -c Counter: The WASM instruction counter to stop and checkpoint(Conflict with -f and -x)
- -a Arguments: The arguments to the function
- -e Environment: The environment variables to the function
![image](https://private-user-images.githubusercontent.com/40686366/332798338-e10dba2b-51f2-4373-a119-0b53f7622407.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwOTEzODUsIm5iZiI6MTczOTA5MTA4NSwicGF0aCI6Ii80MDY4NjM2Ni8zMzI3OTgzMzgtZTEwZGJhMmItNTFmMi00MzczLWExMTktMGI1M2Y3NjIyNDA3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4NTEyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUyNDc5Y2UxNzQ1MDFlMTJhMTYwOTI0MzdiMGYyZGVjOWJlNWNkOWZkOWY0OTliMGQ0ODI0YWFiYjE0ZGU2OTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.7HX6FvDuprF7e6X8g9lSlFSRl8GinhOmp4of7r2mOzg)
- All the pointers will be stored as offset to the linear memory.
- Go forward and never go back, all the calling into WASI land will row back to the call on recovery.
- Use AOT compiler convention with a stable point to achieve cross-platform.
![image](https://private-user-images.githubusercontent.com/40686366/332797296-ab5fb538-82e7-4a62-9516-d29052670c38.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwOTEzODUsIm5iZiI6MTczOTA5MTA4NSwicGF0aCI6Ii80MDY4NjM2Ni8zMzI3OTcyOTYtYWI1ZmI1MzgtODJlNy00YTYyLTk1MTYtZDI5MDUyNjcwYzM4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4NTEyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJlZjNjNDg0NDgxOTgwMDE4ZjA0ODQ2ODg2NzkwZjY5MDA3N2Y4ZWM4ZGJjOWU1Mzc2ZmFmMDg5ZTM4NWQ5NjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Fna8d86pQOQQUERO6YLKxm4CUcSGaEanr_WKUKgyh5s)
![image](https://private-user-images.githubusercontent.com/40686366/332797382-1f3dc51d-75ee-44cb-ae89-288157d8f498.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwOTEzODUsIm5iZiI6MTczOTA5MTA4NSwicGF0aCI6Ii80MDY4NjM2Ni8zMzI3OTczODItMWYzZGM1MWQtNzVlZS00NGNiLWFlODktMjg4MTU3ZDhmNDk4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4NTEyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU3YjEwYTkxMDk2MDRiNjE3MzkzZDE1ZmNhNjMxNTg2ZmMwMTI5OGYxYjQ0MjM1ZjgxMWQ2MTBkYTk4N2RkZjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.eFLU72-ilexiw_IiJ8W7zTOIRl5hu7DU2yLG4_mUjXw)
- Cloud Edge integration
- Optimistic Computing
- FAASM Warm start
![image](https://private-user-images.githubusercontent.com/40686366/332798599-aa9a9291-cf2c-4703-ab73-be2934a613fd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwOTEzODUsIm5iZiI6MTczOTA5MTA4NSwicGF0aCI6Ii80MDY4NjM2Ni8zMzI3OTg1OTktYWE5YTkyOTEtY2YyYy00NzAzLWFiNzMtYmUyOTM0YTYxM2ZkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA4NTEyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA3YjA2OWQ5NjhjZjY5Y2ZjM2YyMTA2YjdhNjJhNjU1NzllZTBhNGU5NDY0YjFjNTZkNzRiOGVlMWZiYThiN2EmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.MGvrVK5L-78_HeOcv6M-2CBROf5Q8Ya22vYqd-PfjXI)