一、系统运行参数(flags )
可通过 init:get_argument/1 获得
- -name ${NODE_NAME}
- -setcookie ${COOKIE}
- -pa ${SERVER_EBIN}
- -mnesia dir ${DB_DIR}
- -s StartMod StartFun
- env Key ${Val}
- -noinput
- -eval Expr (init flag)
- -meta_root MetaDir (make file time log db : ets_meta_config)
- -kernel dist_auto_connect never | once %连接节点
- -hidden %隐藏节点(避免节点间心跳包检查,造成网络风暴)
- -env ERL_CRASH_DUMP xxx/xxx.erl_dump %dump日志路径
二、模拟器参数(emulator flags)
- +K ture 是否启用的kernel的poll机制(默认为false),增加调度频率
- +A 100 异步进程数,为某些port调用服务,范围为0~1024(默认为10)
- +P 1024000 最大进程数(默认2^18)
- +Q 65535 最大port数
- +e 2000 最大ets数(默认1400)
- +sbt db 绑定调度器,让cpu负载均衡,避免大量跃迁
- +sub true 开启cpu负载均衡(false 则采用cpu密集调度策略)
- +spp true 开启并行port调度队列,增加系统吞吐量
- +smp false 调度器提前开启
- +swct eager cpu频繁唤醒,增加cpu利用率
- +swt very_hight | medium | low cpu唤醒时机
- +sbwt none 调度器休眠机制
- +zdbbl 204800 端口buffer大小
- -heart 开启erlang的心跳检测
- +t size 最大原子数(默认1048576)
- +S Max:Online 最大调度线程数和在线调度线程数
三、erlang启动过程
- erl_init 初始化 bif,export等erlang数据结构
- load_perloaded 预加载文件模块
- erl_first_process_opt 启动OTP架构
- SMP scheduler 启动过程(不一定开启)
- erts_sys_main_thread 启动系统主进程(可以指定启动进程数)
- erts_get_async_ready_queue (若开启了SMP,执行队列)
- emulator stack 设置仿真器大小
- emulator 启动仿真器