1# Copyright (c) 2021-2024 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14module: 15 name: runtime 16 namespace: ark 17 18options: 19- name: boot-panda-files 20 type: arg_list_t 21 default: 22 - $ORIGIN/../pandastdlib/arkstdlib.abc 23 description: Boot panda files separated by colon 24 delimiter: ":" 25 26- name: panda-files 27 type: arg_list_t 28 default: [] 29 description: Panda files separated by colon which is not within boot-panda-files 30 delimiter: ":" 31 32- name: boot-intrinsic-spaces 33 type: arg_list_t 34 default: 35 - core 36 possible_values: 37 - core 38 description: Load specified intrinsic spaces. This option is for fine tuning. Use load-runtimes instead 39 delimiter: ":" 40 41- name: boot-class-spaces 42 type: arg_list_t 43 default: 44 - core 45 possible_values: 46 - core 47 description: Load specified class spaces. This option is for fine tuning. Use load-runtimes instead 48 delimiter: ":" 49 50- name: runtime-type 51 type: std::string 52 default: core 53 possible_values: 54 - core 55 description: Runtime type. This option is for fine tuning. Use load-runtimes instead 56 57- name: load-runtimes 58 type: arg_list_t 59 default: 60 - core 61 possible_values: 62 - core 63 description: Load specified class and intrinsic spaces and define runtime type 64 delimiter: ":" 65 66- name: runtime-compressed-strings-enabled 67 type: bool 68 default: true 69 description: Enable/disable compressed strings 70 71- name: explicit-concurrent-gc-enabled 72 type: bool 73 default: true 74 description: Enable/disable explicit GC run in concurrent 75 76- name: run-gc-in-place 77 type: bool 78 default: false 79 description: Enable/disable running GC only in place 80 81- name: full-gc-bombing-frequency 82 type: uint32_t 83 default: 0 84 description: Switch on running Full GC collection instead of the one in the trigger queue in the GC thread. Value means frequency - each N collection in the GC thread will be a full collection. Can't be use with run-gc-in-place 85 86- name: run-gc-every-safepoint 87 type: bool 88 default: false 89 description: Run GC on every safepoint. GC will be run only if we use gc-trigger-type=debug and run-gc-in-place=true 90 91- name: compiler-enable-jit 92 type: bool 93 default: true 94 description: Enables/disables JIT compiler 95 96- name: compiler-hotness-threshold 97 type: uint32_t 98 default: 3000 99 description: Threshold for "hotness" counter of the method after that it will be compiled 100 101- name: compiler-profiling-threshold 102 type: uint32_t 103 default: 1500 104 description: Threshold to start method profiling. 105 106- name: compiler-enable-osr 107 type: bool 108 default: true 109 description: Enables/disables OSR compilation 110 111- name: debugger-library-path 112 type: std::string 113 default: "" 114 description: Path to debugger library 115 116- name: debugger-enable 117 type: bool 118 default: false 119 description: Is debugger enabled on runtime create 120 121- name: sampling-profiler-enable 122 type: bool 123 default: false 124 description: Is the sampling profiler enabled during execution time 125 126- name: sampling-profiler-interval 127 type: uint32_t 128 default: 500 129 description: Sampling profiler interval in microseconds 130 131- name: sampling-profiler-output-file 132 type: std::string 133 default: "" 134 description: Name of file to collect trace in .aspt format 135 136- name: debugger-port 137 type: uint32_t 138 default: 19015 139 description: Port for serving debugger clients via socket 140 141- name: debugger-break-on-start 142 type: bool 143 default: false 144 description: Whether to break threads on creation or not 145 146- name: log-components 147 type: arg_list_t 148 default: 149 - all 150 possible_values: 151 - all 152 - alloc 153 - mm-obj-events 154 - classlinker 155 - common 156 - core 157 - gc 158 - gc_trigger 159 - reference_processor 160 - interpreter 161 - compiler 162 - pandafile 163 - memorypool 164 - runtime 165 - trace 166 - debugger 167 - interop 168 - verifier 169 - compilation_queue 170 - aot 171 - events 172 - scheduler 173 - coroutines 174 description: '[DEPRECATED] Option was moved to libpandabase/options.yaml, use base_options::Options instead of runtime options.' 175 delimiter: ":" 176 deprecated: true 177 178- name: compiler-nullcheck 179 type: uint64_t 180 default: 1 181 possible_values: 182 - 0 183 - 1 184 description: Dfx option for compiler-nullcheck 185 186- name: reference-dump 187 type: uint64_t 188 default: 1 189 possible_values: 190 - 0 191 - 1 192 description: Dfx option for reference-dump 193 194- name: signal-catcher 195 type: uint64_t 196 default: 1 197 possible_values: 198 - 0 199 - 1 200 description: Dfx option for signal-catcher 201 202- name: signal-handler 203 type: uint64_t 204 default: 1 205 possible_values: 206 - 0 207 - 1 208 description: Dfx option for signal-handler 209 210- name: sigquit-flag 211 type: uint64_t 212 default: 1 213 possible_values: 214 - 0 215 - 1 216 description: Dfx option for sigquit 217 218- name: sigusr1-flag 219 type: uint64_t 220 default: 1 221 possible_values: 222 - 0 223 - 1 224 description: Dfx option for sigusr1 225 226- name: sigusr2-flag 227 type: uint64_t 228 default: 1 229 possible_values: 230 - 0 231 - 1 232 description: Dfx option for sigusr2 233 234- name: mobile-log-flag 235 type: uint64_t 236 default: 1 237 possible_values: 238 - 0 239 - 1 240 description: Dfx option for mobile-log 241 242- name: dfx-log 243 type: uint64_t 244 default: 0 245 possible_values: 246 - 0 247 - 1 248 description: Dfx option for dfx log 249 250- name: gc-type 251 type: std::string 252 default: g1-gc 253 possible_values: 254 - epsilon 255 - epsilon-g1 256 - stw 257 - gen-gc 258 - g1-gc 259 description: Type of used GC 260 261- name: ic-enable 262 type: bool 263 default: true 264 description: switch of inline cache 265 266- name: gc-trigger-type 267 type: std::string 268 default: heap-trigger-test 269 possible_values: 270 - heap-trigger-test 271 - heap-trigger 272 - adaptive-heap-trigger 273 - trigger-heap-occupancy 274 - no-gc-for-start-up 275 - debug 276 - debug-never 277 - pause-time-goal-trigger 278 description: Type of used GC trigger 279 280- name: log-detailed-gc-info-enabled 281 type: bool 282 default: false 283 description: If print INFO log to get more detailed information in GC. 284 285- name: log-detailed-gc-compaction-info-enabled 286 type: bool 287 default: false 288 description: If print INFO log to get more detailed compaction/promotion information per region in GC. 289 290- name: gc-trigger-percent-threshold 291 type: uint32_t 292 default: 15 293 description: Percent of heap for threshold increasing 294 295- name: gc-trigger-adaptive-multiplier 296 type: uint32_t 297 default: 3 298 description: Adjust jump from too frequent gc. New jump calculate as gc-trigger-adaptive-multiplier * max-max-extra-heap-size 299 300- name: max-trigger-percent 301 type: uint32_t 302 default: 45 303 description: Percent of maximum heap size is used as threshold for trigger-heap-occupancy 304 305- name: skip-startup-gc-count 306 type: uint32_t 307 default: 10 308 description: No stw gc count for no-gc-for-start-up 309 310- name: gc-use-nth-alloc-trigger 311 type: bool 312 default: false 313 description: Allow to trigger GC on n-th allocation 314 315- name: init-young-space-size 316 type: uint64_t 317 default: 4194304 318 description: Initial young space size gen-gc 319 320- name: young-space-size 321 type: uint64_t 322 default: 4194304 323 description: Young space size of gen-gc 324 325- name: young-shared-space-size 326 type: uint64_t 327 default: 524288 328 description: How much space in young-gen are shared (this space is not used for tlabs) 329 330- name: min-extra-heap-size 331 type: uint64_t 332 default: 5242880 333 description: Minimum extra heap size for trigger gc 334 335- name: max-extra-heap-size 336 type: uint64_t 337 default: 8388608 338 description: Maximum extra heap size for trigger gc 339 340- name: gc-debug-trigger-start 341 type: uint64_t 342 default: 0 343 description: First iteration to start returning true in debug trigger 344 345- name: gc-dump-heap 346 type: bool 347 default: false 348 description: Dump heap before and after GC 349 350- name: gc-workers-count 351 type: uint32_t 352 default: 2 353 description: Set number of additional GC helper threads. GC uses these threads to speed up collection doing work in parallel. 354 355- name: manage-gc-threads-affinity 356 type: bool 357 default: true 358 description: Manage GC Threads affinity on cores 359 360- name: use-weak-cpu-for-gc-concurrent 361 type: bool 362 default: false 363 description: Set GC Thread on weak cores during concurrent phases 364 365- name: g1-region-garbage-rate-threshold 366 type: uint32_t 367 default: 52 368 description: Specify garbage rate threshold of a tenured region to be included into a mixed collection. 369 370- name: g1-number-of-tenured-regions-at-mixed-collection 371 type: uint32_t 372 default: 20 373 description: Specify a max number of tenured regions which can be collected at mixed collection in G1GC. 374 375- name: g1-track-freed-objects 376 type: std::string 377 default: default 378 possible_values: 379 - default 380 - 'true' 381 - 'false' 382 description: Specify whether G1GC tracks object removing (i.e. update objects count in memstats and log removed objects). Default means true on Release and false otherwise. If the value is true G1GC doesn't delete classes in concurrent phase because it needs to know object size. 383 384- name: gc-marking-stack-new-tasks-frequency 385 type: uint64_t 386 default: 10000000 387 description: Limit the creation rate of tasks during marking in nanoseconds. if average task creation during marking is less than this value - it increases the stack size limit to create tasks less frequently. 388 389- name: gc-root-marking-stack-max-size 390 type: uint32_t 391 default: 186 392 description: The max stack size for root marking in main thread, if it exceeded, we will send a new task to workers. 0 means unlimited. 393 394- name: gc-workers-marking-stack-max-size 395 type: uint32_t 396 default: 200 397 description: The max stack size for marking stage proceed in workers threads, if it exceeded, we will send a new task to other workers. 0 means unlimited. 398 399- name: gc-parallel-marking-enabled 400 type: bool 401 default: true 402 description: Enable parallel marking in GC if it is supported (now it is G1 and STW). If we don't have gc workers, this options will be ignored. 403 404- name: gc-parallel-compacting-enabled 405 type: bool 406 default: true 407 description: Enable parallel compacting in GC if it is supported (now it is G1). If we don't have gc workers, this options will be ignored. 408 409- name: gc-parallel-ref-updating-enabled 410 type: bool 411 default: true 412 description: Enable parallel references updating in GC if it is supported (now it is G1). If we don't have gc workers, this options will be ignored. 413 414- name: g1-single-pass-compaction-enabled 415 type: bool 416 default: true 417 description: Enable single pass compaction mode for G1 GC if it is supported by VM implementation 418 419- name: reference-processor-enable 420 type: bool 421 default: true 422 description: Enables/disables ReferenceProcessor 423 424- name: log-level 425 type: std::string 426 default: error 427 possible_values: 428 - debug 429 - info 430 - warning 431 - error 432 - fatal 433 description: '[DEPRECATED] Option was moved to libpandabase/options.yaml, use base_options::Options instead of runtime options.' 434 deprecated: true 435 436- name: log-stream 437 type: std::string 438 default: std 439 possible_values: 440 - std 441 - file 442 - fast-file 443 - dummy 444 description: '[DEPRECATED] Option was moved to libpandabase/options.yaml, use base_options::Options instead of runtime options.' 445 deprecated: true 446 447- name: log-file 448 type: std::string 449 default: "" 450 description: '[DEPRECATED] Option was moved to libpandabase/options.yaml, use base_options::Options instead of runtime options.' 451 deprecated: true 452 453- name: gc-enable-tracing 454 type: bool 455 default: false 456 description: enables/disables tracing gc 457 458- name: g1-enable-concurrent-update-remset 459 type: bool 460 default: true 461 description: enables/disables concurrent update remset thread 462 463- name: g1-min-concurrent-cards-to-process 464 type: uint32_t 465 default: 2 466 description: Minimum number of cards to process from queue in update-remset-thread. Higher number consumes less CPU, but can cause higher pause. 467 468- name: g1-hot-cards-processing-frequency 469 type: uint32_t 470 default: 7 471 description: Frequency of proccessing hot cards in update-remset-thread 472 473- name: g1-promotion-region-alive-rate 474 type: uint32_t 475 default: 75 476 description: Minimum percentage of alive bytes in young region to promote it into tenured without moving. 100 value means never. 477 478- name: g1-full-gc-region-fragmentation-rate 479 type: uint32_t 480 default: 10 481 description: Maximum fragmentation percentage for a tenured region with no garbage inside to skip it on full collection. If the region has bigger fragmentation, we will collect it during a full collection in spite of it has no garbage inside. 0 value means we will collect every region. 482 483- name: g1-pause-time-goal 484 description: Enable G1 pause time goal 485 sub_options: 486 - name: max-gc-pause 487 type: uint32_t 488 default: 10 489 description: Maximum sum of G1 GC pauses during gc-pause-interval in milliseconds 490 - name: gc-pause-interval 491 type: uint32_t 492 default: 11 493 description: Time interval for max-gc-pause in milliseconds 494 495- name: distributed-profiling 496 type: bool 497 default: false 498 description: Enable/disable collection of information for distributed profiling 499 500- name: aot-file 501 type: std::string 502 default: "" 503 description: path to aot file 504 505- name: aot-files 506 type: arg_list_t 507 default: [] 508 description: List of aot files to be loaded 509 delimiter: ':' 510 511- name: aot-verify-abs-path 512 type: bool 513 default: true 514 description: Use absolute path to panda files in Aot verification 515 516- name: adaptive-tlab-size 517 type: bool 518 default: true 519 description: Enable/disable adaptive TLAB size according to runtime allocation statistics 520 521- name: init-tlab-size 522 type: uint64_t 523 default: 4096 524 description: Initial TLAB size and maximum size of object to be allocated in TLAB. TLAB size remains constant unless adaptive-tlab-size is enabled. Also, this value is used for YoungAllocMaxSize 525 526- name: max-tlab-size 527 type: uint64_t 528 default: 16384 529 description: Max TLAB size. Used when adaptive-tlab-size is enabled 530 531- name: use-tlab-for-allocations 532 type: bool 533 default: true 534 description: Enable/disable TLAB using for object allocations. Now, it is ignored for all GCs except GenGC. Temporary option for quick switch between modes. 535 536- name: init-heap-size-limit 537 type: uint64_t 538 default: 536870912 539 description: Initial size of pool used for objects (Xms). If it was not set explicitly then it set as heap-size-limit 540 541- name: heap-size-limit 542 type: uint32_t 543 default: 536870912 544 description: Max heap size 545 546- name: internal-memory-size-limit 547 type: uint64_t 548 default: 2147483648 549 description: Max internal memory used by the VM 550 551- name: frames-memory-size-limit 552 type: uint64_t 553 default: 2147483648 554 description: Max internal memory used for frames in the VM 555 556- name: min-heap-free-percentage 557 type: uint32_t 558 default: 30 559 description: Minimum percentage of free space in heap. Must be 0 <= min-heap-free-percentage <= max-heap-free-percentage <= 100 560 561- name: max-heap-free-percentage 562 type: uint32_t 563 default: 70 564 description: Maximum percentage of free space in heap. Must be 0 <= min-heap-free-percentage <= max-heap-free-percentage <= 100 565 566- name: code-cache-size-limit 567 type: uint64_t 568 default: 33554432 569 description: The limit for compiled code size. 570 571- name: compiler-memory-size-limit 572 type: uint64_t 573 default: 268435456 574 description: Max memory used by the compiler 575 576- name: print-memory-statistics 577 type: bool 578 default: false 579 description: Enable/disable printing memory statistics in the end of the program 580 581- name: print-gc-statistics 582 type: bool 583 default: false 584 description: Enable/disable printing gc statistics in the end of the program 585 586- name: no-async-jit 587 type: bool 588 default: false 589 description: Perform compilation in the main thread or in parallel worker 590 591- name: compiler-queue-type 592 type: std::string 593 default: counter-priority 594 possible_values: 595 - simple 596 - counter-priority 597 - aged-counter-priority 598 description: Type of compiler queue 599 600- name: compiler-task-life-span 601 type: uint32_t 602 default: 500 603 description: A time in milliseconds of task life span in compiler counter priority queue 604 605- name: compiler-queue-max-length 606 type: uint32_t 607 default: 100 608 description: Max length of compiler queue 609 610- name: compiler-epoch-duration 611 type: uint32_t 612 default: 500 613 description: Duration in milliseconds of an epoch in compiler aged counter priority queue 614 615- name: compiler-death-counter-value 616 type: uint32_t 617 default: 500 618 description: Minimum value of aged counter, which will be still considered 619 620- name: limit-standard-alloc 621 type: bool 622 default: false 623 description: Limit standard allocations usage in runtime 624 625- name: internal-allocator-type 626 type: std::string 627 default: default 628 possible_values: 629 - panda_allocators 630 - malloc 631 - default 632 description: Default means using malloc for Release, and panda allocators for Debug builds. If we use malloc, we will ignore limit-standard-alloc option. 633 634- name: finalizer-timeout-ms 635 type: uint32_t 636 default: 10000 637 description: Set finalizer daemon watchdog time 638 639- name: properties 640 type: arg_list_t 641 default: 642 - user.locale=en-US 643 description: command-line property settings of VM 644 645- name: events-output 646 type: std::string 647 default: none 648 possible_values: 649 - none 650 - csv 651 - memory 652 - log 653 description: Specify events output 654 655- name: events-file 656 type: std::string 657 default: events.csv 658 description: Path to events output file (if needed) 659 660- name: mem-alloc-dump-exec 661 type: bool 662 default: false 663 description: true if need to dump 664 665- name: mem-alloc-dump-file 666 type: std::string 667 default: mem_dump.csv 668 description: Path to mem dump file (if needed) 669 670- name: startup-time 671 type: bool 672 default: false 673 description: Print the start time of command execution 674 675- name: max-free 676 type: uint32_t 677 default: 8388608 678 description: Trigger native memory recycling watermark, default 8 M 679 680- name: native-gc-trigger-type 681 type: std::string 682 default: simple-strategy 683 possible_values: 684 - no-native-gc-trigger 685 - simple-strategy 686 description: Type of native gc trigger 687 688- name: profilesaver-sleeping-time-ms 689 type: uint32_t 690 default: 2000 691 description: Set wake up period time of daemon thread for profile saver 692 693- name: profilesaver-delta-number-threshold 694 type: uint64_t 695 default: 0 696 description: delta number threshold of newly added method or class for profile saver 697 698- name: profilesaver-enabled 699 type: bool 700 default: false 701 description: whether open the profilesaver functions 702 703- name: start-as-zygote 704 type: bool 705 default: false 706 description: whether current vm is zygote 707 708- name: verification-enabled 709 type: bool 710 default: false 711 description: Whether to enable verification 712 713- name: verification-mode 714 type: std::string 715 default: disabled 716 possible_values: 717 - disabled 718 - on-the-fly 719 - ahead-of-time 720 description: Verification mode. If verification-enabled option is turned on, the default value is ahead-of-time. 721 722- name: verification-update-cache 723 type: bool 724 default: true 725 description: Whether to update verification result cache 726 727- name: verification-threads 728 type: uint32_t 729 default: 1 730 description: number of verification threads 731 732- name: verification-config-file 733 type: std::string 734 default: "default" 735 description: filename with debug config for verifier 736 737- name: verification-cache-file 738 type: std::string 739 default: "" 740 description: verifier cache filename 741 742- name: enable-fast-heap-verifier 743 type: bool 744 default: true 745 description: Enable fast heap verifier, which is faster than ordinary heap verifier but uses more internal memory 746 747- name: heap-verifier 748 type: arg_list_t 749 default: [] 750 possible_values: 751 - pre 752 - into 753 - post 754 - before_g1_concurrent 755 - fail_on_verification 756 description: parameters for heap verification 757 delimiter: ":" 758 759- name: max-global-ref-size 760 type: uint32_t 761 default: 65535 762 description: max size of global reference storage 763 764- name: global-reference-size-check-enabled 765 type: bool 766 default: false 767 description: whether open the global reference size check 768 769- name: concurrent-gc-enabled 770 type: bool 771 default: true 772 description: whether concurrent GC is enabled 773 774- name: snapshot-serialize-enabled 775 type: bool 776 default: false 777 description: whether snapshot serialize is enabled 778 779- name: snapshot-deserialize-enabled 780 type: bool 781 default: true 782 description: whether snapshot deserialize is enabled 783 784- name: snapshot-file 785 type: std::string 786 default: "/system/etc/snapshot" 787 description: snapshot file 788 789- name: framework-abc-file 790 type: std::string 791 default: "strip.native.min.abc" 792 description: snapshot file 793 794- name: enable-an 795 description: Try to load ARK .an file base on abc file location 796 sub_options: 797 - name: force 798 type: bool 799 default: false 800 description: Crash if there is no .an file for location based on .abc file 801 802- name: verify-call-stack 803 type: bool 804 default: false 805 description: Verify call stack before using of the StackWalker 806 807- name: safepoint-backtrace 808 type: bool 809 default: false 810 description: Print backtrace each time a thread gets suspended 811 812- name: aot-string-gc-roots-limit 813 type: uint64_t 814 default: 1000 815 description: Maximum amount of AOT string PLT-slots registered as GC roots 816 817- name: resolve-string-aot-threshold 818 type: uint32_t 819 default: 1 820 description: Minimum amount of ResolveStringAot calls before storing string pointer into PLT-slot 821 822- name: icu-data-path 823 type: std::string 824 default: "default" 825 description: Path to generated icu data file 826 827- name: ark-aot 828 type: bool 829 default: false 830 description: check if runtime start by ark_aot 831 832- name: intrinsics-blacklist 833 type: arg_list_t 834 default: [] 835 description: List of methods for which intrinsics should not be linked 836 delimiter: "," 837 838- name: verify-entrypoints 839 type: bool 840 default: false 841 description: Verify compiler entrypoints 842 843- name: ignore-daemon-memory-leaks-threshold 844 type: uint32_t 845 default: 0 846 description: Ignore daemon memory leaks during runtime destruction with the specified threshold 847 848- name: interpreter-type 849 type: std::string 850 default: llvm 851 possible_values: [cpp, irtoc, llvm] 852 description: Interpreter implementation type 853 854- name: abc-layout-profile-location 855 type: std::string 856 default: "/data/profile/" 857 description: Specify the location of abc layout profile 858 859- name: intrusive-test 860 type: uint32_t 861 default: 0 862 description: Numerical identifier of an intrusive test 863 864- name: profile-output 865 type: std::string 866 default: "profile.bin" 867 description: Specify the location the collected profile information 868 869- name: call-profiling-table-size 870 type: uint32_t 871 default: 1000 872 description: Size of call profiling table size 873 874- name: coroutine-stack-size-pages 875 type: uint32_t 876 default: 64 877 description: defines stack size for stackful coroutines (in number of pages) 878 879- name: coroutines-stack-mem-limit 880 type: uint64_t 881 default: 134217728 882 description: defines the total amount of memory that can be used for stackful coroutine stacks allocation (in bytes) 883 884- name: use-coroutine-pool 885 type: bool 886 default: false 887 description: caches coroutine and coroutine context instances in a pool to speedup creation/destruction 888 889- name: workers-type 890 type: std::string 891 default: taskmanager 892 possible_values: 893 - threadpool 894 - taskmanager 895 description: Set type of additional VM workers. VM uses these workers to speed up internal algorithms (JIT, GC, etc.) 896 897- name: taskmanager-workers-count 898 type: uint32_t 899 default: 4 900 description: Number of worker threads for the taskmanager. Option is used only for --worker-type=taskmanager 901 902- name: task-stats-type 903 type: std::string 904 default: no-task-stats 905 possible_values: 906 - no-task-stats 907 - light-task-stats 908 description: Set type of task stats that will collect task manager metrics, if use set `no-task-stats` there will be no stats collection 909