You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
int PhxEngine::RunPaxos()
{
。。。。。,,
。。。。。
//添加group
for( int i = 0 ; i < gsum ; i++)
{
GroupSMInfo oSMInfo;
oSMInfo.iGroupIdx = i;
if( i == 0 )
{
oSMInfo.bIsUseMaster = true;
}
for( int i = 1 ; i <= max ; i++)
{
OrderSync* tmp = new OrderSync;
tmp->id = i;
//每个group 添加状态机
oSMInfo.vecSMList.push_back(tmp);
}
//添加group
oOptions.vecGroupSMInfoList.push_back(oSMInfo);
}
oOptions.pMasterChangeCallback = &PhxEngine::OnMasterChange;
。。。。。
for( int i = 0 ; i< gsum ; i++)
{
m_poPaxosNode->SetMasterLease(i, 3000);
//设置每个group线程数分配一个线程. i 是group id 。
m_poPaxosNode->SetMaxHoldThreads(i, 1);
m_poPaxosNode->SetLogSync(i,false);
}
LOGS<<"run paxos ok"<<std::endl;
}
发其调用, 思路是,随机的分配到每一个group ,随机的使用每个group 里面状态机, 进行提交。
最后统计提交总是和成功总数. 按成功总是计算tps
{
string oid = buffer;
total++;
long long rm = tars::TC_Common::now2us();
srandom(rm);
int gid = random()%gsum;
int matchid ;
matchid = random()%max + 1;
SMCtx oCtx;
OrderSMCtx tx;
oCtx.m_pCtx = (void *)&tx;
oCtx.m_iSMID = matchid;
nodeid_t id = m_poPaxosNode->GetMyNodeID();
m_poPaxosNode->SetProposeWaitTimeThresholdMS(id, 1000);
int ret = m_poPaxosNode->Propose(gid, buffer, llInstanceID, &oCtx);
------------------ 原始邮件 ------------------
发件人: "jettchen00"<[email protected]>;
发送时间: 2020年3月23日(星期一) 上午10:36
收件人: "Tencent/phxpaxos"<[email protected]>;
抄送: "316871816"<[email protected]>; "Author"<[email protected]>;
主题: Re: [Tencent/phxpaxos] 关于如何运行多个Group 提升性能 (#171)
你的程序可以并发的调用m_poPaxosNode->Propose这个接口吗,也就是说你处理外部请求的server必须是多线程或者多进程模式?
另外你为啥要调用SetMaxHoldThreads这个接口
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
腾讯的大神好,请教一个问题
文档描述:
设置oOptions.iGroupCount为1,标识我们想同时运行多少个PhxPaxos实例。我们通过GroupIdx来标识实例,
其范围为[0,oOptions.iGroupCount),我们支持并行运行多个实例,每个实例独立运作。不同实例直接无任何关联,
支持多实例的目的仅仅是为了让它们可以共享同一个IP/PORT。
我的目的:是运行多个Group 提高系统性能
我的问题:我写了一个启动多个group 的程序, 但是性能结果并没有提高,反而下降.
我的环境:4核心 8G内存, 一台物理机上部署了3个进程. 每个进程有(1,n) 个group, 一个group 有(1, N) 个状态机. 一个进程里线程个数和group 数字相同
初始化:大概如下
int PhxEngine::RunPaxos()
{
。。。。。,,
。。。。。
//添加group
for( int i = 0 ; i < gsum ; i++)
{
GroupSMInfo oSMInfo;
oSMInfo.iGroupIdx = i;
if( i == 0 )
{
oSMInfo.bIsUseMaster = true;
}
for( int i = 1 ; i <= max ; i++)
{
OrderSync* tmp = new OrderSync;
tmp->id = i;
//每个group 添加状态机
oSMInfo.vecSMList.push_back(tmp);
}
//添加group
oOptions.vecGroupSMInfoList.push_back(oSMInfo);
}
oOptions.pMasterChangeCallback = &PhxEngine::OnMasterChange;
。。。。。
}
发其调用, 思路是,随机的分配到每一个group ,随机的使用每个group 里面状态机, 进行提交。
最后统计提交总是和成功总数. 按成功总是计算tps
{
string oid = buffer;
total++;
long long rm = tars::TC_Common::now2us();
srandom(rm);
int gid = random()%gsum;
int matchid ;
matchid = random()%max + 1;
SMCtx oCtx;
OrderSMCtx tx;
oCtx.m_pCtx = (void *)&tx;
oCtx.m_iSMID = matchid;
}
我的结论: 多个group 反而性能没有什么提升。测试性能 total = 13880 succ=13876 tps=1387 大概1387 左右。 如果每个进程都发起提按,性能在500 左右,错误码爆 -14
我如何实现多个group 导致性能提升呢? 我该怎么做? 你们是怎么做的!!!!拜托了,大神
The text was updated successfully, but these errors were encountered: