[PATCH-next 00/16] CPU Utilization measurement and Perf refactoring
by olichtne@redhat.com
From: Ondrej Lichtner <olichtne(a)redhat.com>
Hi all,
the core of this patchset is refactorization of the PerfTestAndEvaluate
recipe template into the lnst.RecipeCommon.Perf package implementing a
template for generic performance measurement tests, moving the
current MeasurementTools (Iperf and TRex) to fit this new model and
adding CPUUtilization measurements.
All of this is then incorporated into the BaseEnrtRecipe which is
currently the main user of the Perf recipe template.
There's also a couple of minor bug fixes and updates to the generic LNST
API based on the experience of using them wrt. the main changes of this
patchset.
!!!!!!!!
Some of these feel more like Proposals at this point though and I'm not
sure if they're good ideas. This is mostly related to the prepare_job
method of the Namespace class. It should definitely be considered and
thought about before fully accepting it.
!!!!!!!!
Additional note: this patchset breaks the ENRT/OvS_DPDK_PvP.py due to
the reorganization of the PerfRecipe. I wanted to send the patchset ASAP
so that it can get some reviews. I'll work on updating the OvS_DPDK_PvP
recipe while those reviews are coming in. And I won't merge this
patchset without the additional fixes for Ovs_DPDK_PvP...
Thanks,
-Ondrej
Ondrej Lichtner (16):
lnst.Common.Utils: change std_deviation calculation
lnst.Tests.Iperf: set target bitrate to 0
lnst.Common.Parameters: add ListParam
lnst.Tests.Iperf: fix parallel parameter
lnst.Tests.Iperf: add runtime_estimate method
lnst.Tests.Iperf: cleanup imports
lnst.Controller.Job: change wait default timeout
lnst.Controller.RecipeResults: add data_level attribute
lnst.Controller.RunSummaryFormatter: fix header format
lnst.Controller.Namespace: add prepare_job method for delayed start
lnst.Controller.Job: expose the what attribute
add lnst.Tests.CPUStatMonitor
lnst.RecipeCommon.{Perf, PerfResult}: refactoring
add lnst.RecipeCommon.Perf.Measurements package
lnst.Controller.RecipeResults: rename desc to description
lnst.Controller.RunSummaryFormatter: improve multiline result
descriptions
lnst/Common/Parameters.py | 18 ++
lnst/Common/Utils.py | 8 +-
lnst/Controller/Job.py | 21 +-
lnst/Controller/Namespace.py | 5 +
lnst/Controller/Recipe.py | 6 +-
lnst/Controller/RecipeResults.py | 41 ++--
lnst/Controller/RunSummaryFormatter.py | 10 +-
lnst/RecipeCommon/IperfMeasurementTool.py | 83 -------
lnst/RecipeCommon/Perf.py | 120 -----------
.../Perf/Measurements/BaseCPUMeasurement.py | 109 ++++++++++
.../Perf/Measurements/BaseFlowMeasurement.py | 202 ++++++++++++++++++
.../Perf/Measurements/BaseMeasurement.py | 29 +++
.../Perf/Measurements/IperfFlowMeasurement.py | 157 ++++++++++++++
.../Perf/Measurements/MeasurementError.py | 4 +
.../Perf/Measurements/StatCPUMeasurement.py | 88 ++++++++
.../Measurements/TRexMeasurement.py} | 0
.../Perf/Measurements/__init__.py | 3 +
lnst/RecipeCommon/Perf/Recipe.py | 73 +++++++
.../{PerfResult.py => Perf/Results.py} | 65 +++---
lnst/RecipeCommon/Perf/__init__.py | 0
lnst/Recipes/ENRT/BaseEnrtRecipe.py | 45 ++--
lnst/Tests/CPUStatMonitor.py | 113 ++++++++++
lnst/Tests/Iperf.py | 14 +-
23 files changed, 923 insertions(+), 291 deletions(-)
delete mode 100644 lnst/RecipeCommon/IperfMeasurementTool.py
delete mode 100644 lnst/RecipeCommon/Perf.py
create mode 100644 lnst/RecipeCommon/Perf/Measurements/BaseCPUMeasurement.py
create mode 100644 lnst/RecipeCommon/Perf/Measurements/BaseFlowMeasurement.py
create mode 100644 lnst/RecipeCommon/Perf/Measurements/BaseMeasurement.py
create mode 100644 lnst/RecipeCommon/Perf/Measurements/IperfFlowMeasurement.py
create mode 100644 lnst/RecipeCommon/Perf/Measurements/MeasurementError.py
create mode 100644 lnst/RecipeCommon/Perf/Measurements/StatCPUMeasurement.py
rename lnst/RecipeCommon/{TRexMeasurementTool.py => Perf/Measurements/TRexMeasurement.py} (100%)
create mode 100644 lnst/RecipeCommon/Perf/Measurements/__init__.py
create mode 100644 lnst/RecipeCommon/Perf/Recipe.py
rename lnst/RecipeCommon/{PerfResult.py => Perf/Results.py} (72%)
create mode 100644 lnst/RecipeCommon/Perf/__init__.py
create mode 100644 lnst/Tests/CPUStatMonitor.py
--
2.19.1
4 years, 10 months
[PATCH-next 00/10] Ported phase2 recipes (v2)
by csfakian@redhat.com
From: Christos Sfakianakis <csfakian(a)redhat.com>
All devices that have "to_guest" label are actually tap devices. They
are renamed to 'tap' instead of 'eth' to avoid confusion. Affected
recipes are (rest are included for completeness):
- VirtualOvsBridgeVlansOverBondRecipe
- VirtualOvsBridgeVlanInHostMirroredRecipe
- VirtualOvsBridgeVlanInGuestMirroredRecipe
- VirtualOvsBridgeVlanInHostRecipe
- VirtualOvsBridgeVlanInGuestRecipe
Christos Sfakianakis (10):
lnst.Recipes.ENRT: add TeamRecipe
lnst.Recipes.ENRT: add DoubleTeamRecipe
lnst.Recipes.ENRT: add TeamVsBondRecipe
lnst.Recipes.ENRT: add VlansOverTeamRecipe
lnst.Recipes.ENRT: add VirtualOvsBridgeVlanInGuestRecipe
lnst.Recipes.ENRT: add VirtualOvsBridgeVlanInHostRecipe
lnst.Recipes.ENRT: add VirtualOvsBridgeVlanInGuestMirroredRecipe
lnst.Recipes.ENRT: add VirtualOvsBridgeVlanInHostMirroredRecipe
lnst.Recipes.ENRT: add VirtualOvsBridgeVlansOverBondRecipe
lnst.Devices: edit OvsBridgeDevice
lnst/Devices/OvsBridgeDevice.py | 4 +-
lnst/Recipes/ENRT/DoubleTeamRecipe.py | 83 ++++++++++
lnst/Recipes/ENRT/TeamRecipe.py | 74 +++++++++
lnst/Recipes/ENRT/TeamVsBondRecipe.py | 87 +++++++++++
...rtualOvsBridgeVlanInGuestMirroredRecipe.py | 110 +++++++++++++
.../ENRT/VirtualOvsBridgeVlanInGuestRecipe.py | 89 +++++++++++
...irtualOvsBridgeVlanInHostMirroredRecipe.py | 102 ++++++++++++
.../ENRT/VirtualOvsBridgeVlanInHostRecipe.py | 87 +++++++++++
.../VirtualOvsBridgeVlansOverBondRecipe.py | 147 ++++++++++++++++++
lnst/Recipes/ENRT/VlansOverTeamRecipe.py | 91 +++++++++++
10 files changed, 872 insertions(+), 2 deletions(-)
create mode 100644 lnst/Recipes/ENRT/DoubleTeamRecipe.py
create mode 100644 lnst/Recipes/ENRT/TeamRecipe.py
create mode 100644 lnst/Recipes/ENRT/TeamVsBondRecipe.py
create mode 100644 lnst/Recipes/ENRT/VirtualOvsBridgeVlanInGuestMirroredRecipe.py
create mode 100644 lnst/Recipes/ENRT/VirtualOvsBridgeVlanInGuestRecipe.py
create mode 100644 lnst/Recipes/ENRT/VirtualOvsBridgeVlanInHostMirroredRecipe.py
create mode 100644 lnst/Recipes/ENRT/VirtualOvsBridgeVlanInHostRecipe.py
create mode 100644 lnst/Recipes/ENRT/VirtualOvsBridgeVlansOverBondRecipe.py
create mode 100644 lnst/Recipes/ENRT/VlansOverTeamRecipe.py
--
2.17.1
4 years, 10 months
[PATCH-next 0/1] Change names in Phase 1 recipes
by csfakian@redhat.com
From: Christos Sfakianakis <csfakian(a)redhat.com>
All devices that have "to_guest" label are actually tap devices. They
are renamed to 'tap' instead of 'eth' to avoid confusion.
Christos Sfakianakis (1):
lnst.Recipes.ENRT: modify naming for tap devices
.../VirtualBridgeVlanInGuestMirroredRecipe.py | 32 +++++++-------
.../ENRT/VirtualBridgeVlanInGuestRecipe.py | 16 +++----
.../VirtualBridgeVlanInHostMirroredRecipe.py | 44 +++++++++----------
.../ENRT/VirtualBridgeVlanInHostRecipe.py | 22 +++++-----
.../ENRT/VirtualBridgeVlansOverBondRecipe.py | 28 ++++++------
5 files changed, 71 insertions(+), 71 deletions(-)
--
2.17.1
4 years, 10 months
[PATCH-next 0/1] Update lnst.Recipes.ENRT.PingFloodRecipe
by csfakian@redhat.com
From: Christos Sfakianakis <csfakian(a)redhat.com>
Make use of the update in PingConf class (commit ddc871c - count and interval
properties defined). Inherit from PingTestAndEvaluate "common recipe template"
that BaseEnrtRecipe inherits from.
Christos Sfakianakis (1):
lnst.Recipes.ENRT.PingFloodRecipe: rework to inherit from
PingTestAndEvaluate
lnst/Recipes/ENRT/PingFloodRecipe.py | 42 ++++++++++++++++++----------
1 file changed, 28 insertions(+), 14 deletions(-)
--
2.17.1
4 years, 10 months
[PATCH] regression_tests: add ovs rpm version to TestExec comment
by olichtne@redhat.com
From: Ondrej Lichtner <olichtne(a)redhat.com>
To get the version of the main ovs package while supporting future
openvswitch2.10 and other packages we use the rpm query by file option.
This isn't universal and won't work on distributions with different
package systems, so we also add || true to the command to avoid failures
because of this command.
Signed-off-by: Ondrej Lichtner <olichtne(a)redhat.com>
---
.../virtual_ovs_bridge_2_vlans_over_active_backup_bond.py | 5 +++++
.../phase2/virtual_ovs_bridge_vlan_in_guest.py | 3 +++
.../phase2/virtual_ovs_bridge_vlan_in_guest_mirrored.py | 5 +++++
.../phase2/virtual_ovs_bridge_vlan_in_host.py | 3 +++
.../phase2/virtual_ovs_bridge_vlan_in_host_mirrored.py | 5 +++++
recipes/regression_tests/phase3/2_virt_ovs_vxlan.py | 5 +++++
recipes/regression_tests/phase3/novirt_ovs_vxlan.py | 5 +++++
recipes/regression_tests/phase3/ovs-dpdk-pvp.py | 3 +++
8 files changed, 34 insertions(+)
diff --git a/recipes/regression_tests/phase2/virtual_ovs_bridge_2_vlans_over_active_backup_bond.py b/recipes/regression_tests/phase2/virtual_ovs_bridge_2_vlans_over_active_backup_bond.py
index 8c2c77b..574bb53 100644
--- a/recipes/regression_tests/phase2/virtual_ovs_bridge_2_vlans_over_active_backup_bond.py
+++ b/recipes/regression_tests/phase2/virtual_ovs_bridge_2_vlans_over_active_backup_bond.py
@@ -52,6 +52,9 @@ offloads_alias = ctl.get_alias("offloads")
nperf_protocols = ctl.get_alias("nperf_protocols")
official_result = bool_it(ctl.get_alias("official_result"))
+h1_ovs_rpm_version = h1.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+h2_ovs_rpm_version = h2.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+
sctp_default_msg_size = "16K"
if offloads_alias is not None:
@@ -64,6 +67,8 @@ else:
[("gro", "on"), ("gso", "on"), ("tso", "off"), ("tx", "off")]]
pr_comment = generate_perfrepo_comment([h1, g1, g2, h2, g3, g4], pr_user_comment)
+pr_comment += "\n<BR/>Host1 OvS rpm version: {}".format(h1_ovs_rpm_version)
+pr_comment += "\n<BR/>Host2 OvS rpm version: {}".format(h2_ovs_rpm_version)
h1_nic1 = h1.get_interface("nic1")
h1_nic2 = h1.get_interface("nic2")
diff --git a/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_guest.py b/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_guest.py
index 6e922f2..7dd083f 100644
--- a/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_guest.py
+++ b/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_guest.py
@@ -58,7 +58,10 @@ else:
[("gro", "on"), ("gso", "on"), ("tso", "off"), ("tx", "off"), ("rx", "on")],
[("gro", "on"), ("gso", "on"), ("tso", "on"), ("tx", "on"), ("rx", "off")]]
+h1_ovs_rpm_version = h1.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+
pr_comment = generate_perfrepo_comment([h1, g1, h2], pr_user_comment)
+pr_comment += "\n<BR/>Host1 OvS rpm version: {}".format(h1_ovs_rpm_version)
h2_vlan10 = h2.get_interface("vlan10")
g1_vlan10 = g1.get_interface("vlan10")
diff --git a/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_guest_mirrored.py b/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_guest_mirrored.py
index aeb390e..923674b 100644
--- a/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_guest_mirrored.py
+++ b/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_guest_mirrored.py
@@ -59,7 +59,12 @@ else:
[("gro", "on"), ("gso", "on"), ("tso", "off"), ("tx", "off"), ("rx", "on")],
[("gro", "on"), ("gso", "on"), ("tso", "on"), ("tx", "on"), ("rx", "off")]]
+h1_ovs_rpm_version = h1.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+h2_ovs_rpm_version = h2.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+
pr_comment = generate_perfrepo_comment([h1, g1, h2, g2], pr_user_comment)
+pr_comment += "\n<BR/>Host1 OvS rpm version: {}".format(h1_ovs_rpm_version)
+pr_comment += "\n<BR/>Host2 OvS rpm version: {}".format(h2_ovs_rpm_version)
g1_vlan10 = g1.get_interface("vlan10")
g2_vlan10 = g2.get_interface("vlan10")
diff --git a/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_host.py b/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_host.py
index a213ea6..0452105 100644
--- a/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_host.py
+++ b/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_host.py
@@ -58,7 +58,10 @@ else:
[("gro", "on"), ("gso", "on"), ("tso", "off"), ("tx", "off"), ("rx", "on")],
[("gro", "on"), ("gso", "on"), ("tso", "on"), ("tx", "on"), ("rx", "off")]]
+h1_ovs_rpm_version = h1.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+
pr_comment = generate_perfrepo_comment([h1, g1, h2], pr_user_comment)
+pr_comment += "\n<BR/>Host1 OvS rpm version: {}".format(h1_ovs_rpm_version)
h2_vlan10 = h2.get_interface("vlan10")
g1_guestnic = g1.get_interface("guestnic")
diff --git a/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_host_mirrored.py b/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_host_mirrored.py
index 634325c..8ef4ba3 100644
--- a/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_host_mirrored.py
+++ b/recipes/regression_tests/phase2/virtual_ovs_bridge_vlan_in_host_mirrored.py
@@ -59,7 +59,12 @@ else:
[("gro", "on"), ("gso", "on"), ("tso", "off"), ("tx", "off"), ("rx", "on")],
[("gro", "on"), ("gso", "on"), ("tso", "on"), ("tx", "on"), ("rx", "off")]]
+h1_ovs_rpm_version = h1.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+h2_ovs_rpm_version = h2.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+
pr_comment = generate_perfrepo_comment([h1, g1, h2], pr_user_comment)
+pr_comment += "\n<BR/>Host1 OvS rpm version: {}".format(h1_ovs_rpm_version)
+pr_comment += "\n<BR/>Host2 OvS rpm version: {}".format(h2_ovs_rpm_version)
g1_guestnic = g1.get_interface("guestnic")
g2_guestnic = g2.get_interface("guestnic")
diff --git a/recipes/regression_tests/phase3/2_virt_ovs_vxlan.py b/recipes/regression_tests/phase3/2_virt_ovs_vxlan.py
index 107d1ae..1d81f65 100644
--- a/recipes/regression_tests/phase3/2_virt_ovs_vxlan.py
+++ b/recipes/regression_tests/phase3/2_virt_ovs_vxlan.py
@@ -50,8 +50,13 @@ pr_user_comment = ctl.get_alias("perfrepo_comment")
nperf_protocols = ctl.get_alias("nperf_protocols")
official_result = bool_it(ctl.get_alias("official_result"))
+h1_ovs_rpm_version = h1.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+h2_ovs_rpm_version = h2.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+
pr_comment = generate_perfrepo_comment([guest1, guest2, guest3, guest4],
pr_user_comment)
+pr_comment += "\n<BR/>Host1 OvS rpm version: {}".format(h1_ovs_rpm_version)
+pr_comment += "\n<BR/>Host2 OvS rpm version: {}".format(h2_ovs_rpm_version)
g1_nic = guest1.get_interface("if1")
g2_nic = guest2.get_interface("if1")
diff --git a/recipes/regression_tests/phase3/novirt_ovs_vxlan.py b/recipes/regression_tests/phase3/novirt_ovs_vxlan.py
index cc3bcd9..37fdffc 100644
--- a/recipes/regression_tests/phase3/novirt_ovs_vxlan.py
+++ b/recipes/regression_tests/phase3/novirt_ovs_vxlan.py
@@ -44,7 +44,12 @@ pr_user_comment = ctl.get_alias("perfrepo_comment")
nperf_protocols = ctl.get_alias("nperf_protocols")
official_result = bool_it(ctl.get_alias("official_result"))
+h1_ovs_rpm_version = h1.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+h2_ovs_rpm_version = h2.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+
pr_comment = generate_perfrepo_comment([h1, h2], pr_user_comment)
+pr_comment += "\n<BR/>Host1 OvS rpm version: {}".format(h1_ovs_rpm_version)
+pr_comment += "\n<BR/>Host2 OvS rpm version: {}".format(h2_ovs_rpm_version)
h1_nic = h1.get_device("int0")
h2_nic = h2.get_device("int0")
diff --git a/recipes/regression_tests/phase3/ovs-dpdk-pvp.py b/recipes/regression_tests/phase3/ovs-dpdk-pvp.py
index 5533f57..b17227c 100644
--- a/recipes/regression_tests/phase3/ovs-dpdk-pvp.py
+++ b/recipes/regression_tests/phase3/ovs-dpdk-pvp.py
@@ -103,6 +103,8 @@ if tmp:
else:
dpdk_version = "unknown"
+ovs_rpm_version = h2.run("rpm -qf `which ovs-vswitchd` || true").get_result()["res_data"]["stdout"]
+
# ------
# TESTS
# ------
@@ -131,6 +133,7 @@ max_dev = ctl.get_alias("max_dev")
pr_comment = generate_perfrepo_comment([h1, h2], pr_user_comment)
pr_comment += "\n<BR>DPDK version: {}".format(dpdk_version)
+pr_comment += "\n<BR/>OvS rpm version: {}".format(ovs_rpm_version)
h1_nic1 = h1.get_interface("if1")
h1_nic2 = h1.get_interface("if2")
--
2.19.1
4 years, 10 months
回复:企业赖以生存的物质基础,固定资产管理
by ���s��
Message-ID: <691722691722691722691722691722691722691722691722691722691722691722>
From: lnst-developers ----<lnst-developers(a)lists.fedorahosted.org>
To: <uqvihuo(a)yukangzhuzao.com>
��/��/��/��/��/��
2018-10-30 06:17:52
4 years, 10 months
代开正规票13805601835
by szhly@szonline.net
代开本地正规发票
可查验后付钱
需要联系:13805601835 邹本雨 (加微信同号)
4 years, 10 months
生产线不平衡的十大原因分析5:06:28
by 史姣妍
lnst-developers,您好
学业、工作、家庭,有时会压得我们喘不过来气,学会为自己留白,偷得浮生半日闲,学会放松。
史姣妍
2018-10-24
4 years, 11 months
326982-新任经理专业强但管理弱_WEY_
by aerhraweadfmcgee_gw@mapleleafmail.com
lnst-developers(a)lists.fedorahosted.org
2018-10-21
09:33:52
新任经理、部门经理全面管理技能提升训练
时间地点:2018年10月27-28日上海
时间地点:2018年11月17-18日深圳
时间地点:2018年11月24-25日北京
时间地点:2018年12月08-09日上海
时间地点:2018年12月22-23日深圳
收费标准:3400元/人(含资料费、专家演讲费、会务费)
培训对象:新上任主管、经理,部门经理/主管,职能经理,技术经理,班组长,
其他相关人员(希望对管理建立完整全面认识,掌握基本管理原则和方法的人士)。
认证费用:高级证书1200元/人
(参加认证考试的学员须交纳此费用,不参加认证考试的学员无须交纳)
备 注:
1、高级证书申请须同时进行理论考试和提交论文考试,学员在报名参加培训和认证
时请提前准备好论文并随理论考试试卷一同提交。
2、凡希望参加认证考试之学员,在培训结束后参加认证考试并合格者,颁发与所参
加培训课程专业领域相同之:“香港��人才中心 HKPTC/�����格��中心《
国际注册(高)级职业经理人》职业资格证书”。(国际认证/全球通行/雇主认可
/联网查询)。
3、课程结束后10日内将证书快递寄给学员;
--------------------------------------------------------------------------------
主办单位:久速企业管理咨询有限公司 咨询电话:(021)51870281 陈小姐
在线咨询QQ:188583308 微信:ZF188519888 邮箱咨询:baoming9168@163.com
--------------------------------------------------------------------------------
课程背景:
企业发展强大,管理干部至关重要,管理团队是企业的骨架,有一批优秀管理者,企业的发
展壮大才会有保证!
很多管理者半路出家,专业强但管理弱,加上企业忙于生存和发展,对管理干部的训练和培
养不到位;他们并非不想做好,只是被繁杂的事务包围,遇到压力,遇到矛盾,显得缺乏清
晰思路和正确的认知,没有有效的工具和方法,结果往往事倍功半,劳而无功。有些管理者,
在管理岗位做了多年,对管理的认识还停留在本能和经验层面,缺乏梳理,缺乏认知和方法
的更新升级。
新任经理、部门经理管理技能全面提升训练将与学员一起讨论理清,管理者基本的角色和职
责是什么,如何在事的管理、人和团队的管理及自我管理之间建立逻辑关联的系统思维,通
过案例分析,逻辑梳理,方法分享和学员问题研讨掌握管理的基本方法和工具,提高有效解
决问题的管理技能。
培训收益
建立自我管理,工作管理,团队管理的管理框架
理解从专业到管理的角色,责任,技能,意识要求
掌握工作管理的逻辑,方法,工具
掌握抓工作执行力和提高效率的方法
了解团队建设的基本思路和方法
掌握培育训练员工的基本方法
掌握员工激励的逻辑和方法
掌握与下属建立关系,沟通及管理员工的思路和方法
曹老师课程优势:
大量工具方法供参考借鉴,如WBS分解,5W3H,PDCA,思考饼图,问题解决要点清单,
学员对照案例模板模仿训练,即可快速应用在实际工作中。
老师20多年管理经验,既有各类企业高管经验,又有改变企业的变革顾问经验,可对学
员管理问题提供切中要害的咨询建议。
--------------------------------------------------------------------------------
课程大纲:
第一讲:管理认知与角色转换
一、角色认知
1、角色误区
重专业轻管理:专业工作太忙,哪有时间做管理?
你在干他在干:你忙忙碌碌,下属乐得清闲。
你不会让我来:把你教会,够我做三遍了。
培养不是我的事:你不胜任就请回到HR部或你妈妈那里去。
缺乏大局观:不代表公司,只维护部门和个人。
言行不职业:行为任性,口无遮拦,天生就是这个个性。
2、状态转换
关系转换:同事和上下关系发生变化
职责转换:工作内容和范围发生变化
角色转换:要扮演新增各种角色
心态转换:承受多方面及更大的压力
方法转换:需要应用各种管理方法
3、角色扮演
设计者:工作和管理设计者?
教练角色:帮助下属成长
团建角色:塑造积极环境
激励角色:点燃下属热情
业绩责任人:对团队业绩负责
HR开发者:选、用、育、留
领导者角色:带出优秀团队
桥梁角色:承上启下担当枢纽
二、管理认知
1、基本概念
如何理解管理和管理的本质?
从专业到管理,最根本的转变是什么?
管人和管事究竟是管什么?
中层管理者的两大基本责任
胜任管理工作应掌握哪些技能?
管理者应具备哪些心态和意识?
2、矛盾处理
应该听制度的还是听领导的?
效率和公平该如何权衡?
是多花时间管事还是多花时间管人?
人情和事情的矛盾如何应对?
学标杆和解决问题如何平衡?
计划和行动哪个更重要?
第二讲:工作管理
一、常见问题
1、计划没有变化快
2、压力传递不下去
3、执行不到位不坚持
4、效率出不来
5、业绩上不去
6、错误重复出现
7、制度推不动
8、需要多方配合的工作沟通配合困难
二、逻辑认知
1、初级脑的影响:惰性、畏难、情绪等本能因素影响了工作行为。
2、大脑的特性:注意力易受干扰,难以持久聚焦
3、组织氛围和环境风气的影响
4、管理机制和管理动作的影响
5、职业化素质训练不足的影响
三、方法工具
1、每阶段团队目标是否明确?是否抓住重点目标?
2、是否有计划(指导性与指令性)?
3、是否将目标翻译成具体任务?
4、是否就工作目标和任务与员工达成行动共识?
5、是否对员工执行过程保持关注和觉知?
6、是否及时协调和组织解决出现的异常和困难?
7、是否对工作结果进行考核,结案,评价,总结,奖惩?
8、是否坚持用小周期闭环管理?
第三讲:如何带团队
一、团队常见问题
1、团队没有活力,铁板一块带不动。
2、心不齐,缺乏共同的价值观,追求,目标。
3、团队风气不好,各种自由主义。
4、团队建设缺思路,缺方法,缺抓手。
二、带团队的逻辑
1、羊群效应:历史是少数人发动,多数人创造的,头羊如何如此重要?
2、自我驯化:教育和文化,使人类从自然进化走向自我驯化。
3、环境理论:改善土壤,提高产量,像爱护眼睛一样守护环境。
4、群聚效应:英雄扎堆出现,如何成就英雄之旅?
5、基础设施:要想富先修路,设计好带团队的机制和舞台。
三、带团队的方法
1、如何发挥领导作用?
头羊意识:你得有当班长带队伍的意识。
明确方向:你得有坚定的价值观,并制定具体的行为规范。
团结骨干:你得团结发动一帮人,先一批,再一群。
宣传教育:你得用教育工具持续教育影响成员。
身教言传:你得自律自省,死磕自己,决不妥协,你们可以慢慢转变,我先严格做到。
2、如何发挥骨干的作用?
甄选骨干:识别积极有潜质的人做骨干,阶段性换血。
密切沟通:坚持常规学习和沟通,保持观念与方法共识
严格要求:针对行为和作风,高标准,严要求,勤纠错,发挥先锋作用。
给他们压担子:业务重用,挑战和锻炼工作能力。
肯定鼓励:不让雷锋吃亏,不忘肯定和奖励。
3、如何发动群众
相信依靠:相信潜力,相信动机,依靠他们开展工作,解决问题。
民主决策:倾听意见,开诸葛亮会,搞头脑风暴,民主集中共识。
民主管理:把管理的权力以规则的方式交给群众。
激发士气:开展比学赶帮超活动。
4、如何抓思想建设
5、如何抓作风建设
6、如何抓能力建设
7、如何抓士气活力
第四讲:培育下属
一、培养下属常见问题:
1、如何培养新人快速胜任?
2、工作忙,没时间培养下属?
3、师傅不愿教,徒弟不愿学。
4、缺乏上进心,没有动力,不愿学,被动学。
5、人培养出来就走了,成了培训基地,不想当冤大头。
6、思路不清方法不当,以为培养就是上课。
二、培养能力的逻辑:
1、做中学:从战争中学习战争与从书本上学习战争,效率差在哪里?
2、模仿学:模仿是本能,如何用好“先抄后超”的策略?
3、集体学:一个人走的快,一群人走得远,如何打造学习型团队?
4、教中学:以教促学,如何提高理论学习的效率?
三、培养能力的方法:
1、经验提炼:挖掘提炼牛人或专家的成熟经验
2、编写教材:将经验以流程,标准,案例,表格工具,方法清单等方式编写成教材。
3、例会培训:在例会中安排短时间培训环节。
4、碎片化培训:利用工作间隙等碎片化时间进行培训。
5、师徒制管理:利用师徒导师制度进行带教培养。
6、专项技能训练:设计模拟训练项目,聚焦训练某项技能
7、牛人指导:利用高手对新人的问题进行指导。
8、新人教新人:新人相互教学。
9、新人知识技能PK:举行知识技能比武,促进新人学习成长。
10、带教奖励制度:设立带教奖励制度,鼓励带教行为。
第五讲:员工激励
一、员工激励常见问题
1、过度依赖物质,忽视精神激励
2、强调考核激励,忽视达标条件
3、重视结果考核,不重过程管理
4、缺乏客观标准,考核模糊主观
5、不公平感对员工士气的打击
6、奖励平均主义带来的消极影响
7、缺乏人文关怀带来的消极影响
8、消极工作和关系氛围带来的消极影响
9、领导方式和作风不当带来的消极影响
10、综合因素导致的弱凝聚力无归属感
二、人员激励的的逻辑和思路
1、人性复杂论:左手胡萝卜右手大棒,以何为主?
2、马斯洛需求理论:如何识别痛点需要?如何打动人心?
3、初级脑理论:受为心之口,情绪感受是第一生产力.
4、公平理论:民不患寡患不均,为了公平,TA会冲动地放弃利益。
5、环境理论:你怎么设计舞台,TA就如何表演。
6、期望理论:有效的路径(努力、目标、奖励、需要),才会产生激励效果。
7、心理学理论:如何顺应心理本能设计引导行为?
8、使命感激励:持久的内驱力来自于超我的意义(something bigger than yourself)
三、员工激励的方法
1、人心激励(识别痛点,激励人心)
2、优越感激励(最XX,前X名)
3、短期回馈(及时,反馈,回报,物化)
4、赋能激励(使工作顺畅,提供条件,支持辅导,帮助训练)
5、公平感激励(事先定规则,区分责任,贡献,奖惩)
6、竞争激励(竞赛,对比排名,同台展示)
7、危机激励(设置对手或替补,严格要求,降级惩处)
8、长期激励(职业发展:能力职位级别,长期物质利益)
9、文化激励(愿景使命,事业,sth bigger than yourself)
10、成就激励(提供挑战机会,助其挑战成功)
11、目标激励(跳一跳够得着的目标,可见的奖励,渴望的需要)
12、氛围激励(人际关系融洽,积极向上的文化)
13、肯定激励(认同,表扬,欣赏,感谢)
14、尊重激励(平等,倾听,理解,包容)
15、信任激励(信任,期待,授权,包容错误)
第六讲:员工管理与沟通:
一、员工管理逻辑认知:
1、认同与管理:没有认同就没有服从,如何先帮后管?
2、关系远近:亲密有间与亲密无间的本质区别在哪里?
3、威严与亲和:为什么光有信不行,还得有威?
4、沟通原则:先心情后事情,如何用同理心沟通?
5、能力与态度:如何灵活应用态度第一,能力第二?
6、管人与管事:以事为先,管不住事,能管好人吗?
7、反求诸己:下属出问题,从自己身上,如何管好自己?
8、环境氛围:下属普遍不好管,是土壤出了问题。
9、个性理论:不是TA的世界不对,只是TA的世界不同.如何因人而异?
10、无明理论:破无明,靠觉知,自渡渡人。TA为何如此自以为是?
11、空间时间解:有些问题解决,需要换换空间,有时还要用时间换空间。
二、员工管理问题研讨:
1、我们工资不高,员工留不住怎么办?
2、员工不主动沟通,不主动汇报,不说真话怎么办?
3、我初来咋到,没有经验,没有威信,下属不服从管理怎么办?
4、如何管理老油条员工?
5、如何管理关系户员工?
6、如何帮新生代员工增强责任心和抗压力?
7、如何处理混日子但又无法辞退的员工?
8、如何管理消极抱怨多,负能量大的员工?
9、有些能力强的员工,工作业绩好,但个性比较强,比较傲慢,服从性不好,怎么办?
10、我同员工关系挺好,但我对他们工作不满意,不好意思把话说重,但他们又不当回事。
--------------------------------------------------------------------------------
主讲老师:曹礼明老师
咨询式管理培训专家!
中国首批PMP(项目管理)认证资格人员
中山大学MBA,心理咨询师(II)
中山大学经理教授研究会成员
相关经历:
10年专注中小企业管理,系统研究300多家企业管理变革经验,总结中小企业管理的通病和症结;
主持多家企业管理变革,取得业绩数据和企业人员的巨大变化,摸索出企业人改变的密码;
担任企业管理教练,培养训练多批企业管理干部;
担任咨询机构咨询师培养教练,培养一批咨询顾问老师;
超过20年企业管理经验;6年企业管理咨询顾问,帮助企业管理变革和升级;10年管理培训师,
专注管理技能和素质训练,提供课程上千场,受训企业过万家。
授课风格:
知识讲授 + 案例分析+ 经验分享+方法训练+问题研讨的学习方式
案例分析做背景,学员问题做主线,知识经验方法分享做引导
咨询式授课和答疑,欢迎学员现场提问,带着问题来,带着答案走!
主讲课程:
《新任经理、部门主管全面管理技能提升训练》
《MTP中层管理技能提升训练》
《中高层干部管理培训》
《高效团队执行力提升》
《跨部门协作与沟通》
《如何激励员工》
《如何培育辅导下属》
《上下沟通与员工管理》
《团队管理与机制建设》
《管理者时间管理》
咨询式的定制内训课程
课前了解问题:
第一步,通过需求调查表,了解企业培训概要需求;
第二步,通过与企业HR或主管领导电话交流,了解具体问题和需求;
第三步,通过问卷抽查,了解学员的问题和需求;
第四步,通过对学员代表的电话访谈或座谈,了解学员对问题和需求的具体理解;
第五步,综合调查结果,设计培训课程。
课中讨论问题:
案例分析做背景,学员问题做主线,知识经验方法分享做引导,解决措施动作为结果。
课后解决问题:
第一步,督促组织者与参训人员制定具体的改善行动计划;
第二步,督促组织者制定动作到位的行动管理方案;
第三步,组织成立微信群,便于网上老师,机构,学员和组织者的及时互动;
第四步,督促组织者根据管理约定跟踪行动计划的落实和实施,老师根据情况及时提供咨询和辅导;
第五步,组织者对问题改善和解决的结果进行总结验收,机构和老师提供支持和协助。
附加值服务:
公开课:同一企业参加课程8人及以上赠送半天老师到企业面对面座谈辅导。
内训课:采用1+2/3+1模式,提前一天到企业调研访谈,2天或3天课程,课后另定时间对参
训学员提供1天到企业面对面问题咨询辅导座谈。针对内训企业,建立学员课后行动微信群,
提供微信跟踪指导1年。
部分内训客户:
中国神华,中外运集团,中粮集团,南京电力,昆山电力,南京风电,福田雷沃汽车,爱达
克汽车,奇瑞汽车,东风本田,福建信用社系统,三井酒业集团,五得利面粉,富兴集团,
伊利集团,九鼎饲料集团,九星印刷集团,帝人集团,杜凯集团,鑫苑置业,创鸿地产,建
亨地产,协信地产,山西合纵房地产,神威药业,九典制药,美大康药业,源基药业,海格
物流,宜隆物流,诚信行物业,中交铁设,中铁电气,格力集团,美克美家集团,浙江轻纺
城,意尔康鞋业,新大牧业,中山食出集团,北京富泰集团,江苏德邦,广东永顺集团,深
圳创富港,三零信息安全,天可电讯,宁波通信,捷普电子,东芯电子,合和电子,英飞拓
电子,清源光电,富华机械,金研机械,世邦机械,成都豪特,山东华特,惠州群富,傲威
耗材,六国化工,云南驰宏锌锗集团。。。。。。
aerhraweadfmcgee_gw(a)mapleleafmail.com
32698209:33:52
4 years, 11 months