Viewing File: /usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyo

ó
æ”\c@sddlmZddlTddlZddlmZddlmZddl	Z	ddl
Z
ejjƒZ
dZdejfd	„ƒYZdS(
i(tbase(t*iÿÿÿÿN(tethcard(tcommandstpumbagsdtNetTuningPlugincBsâeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z	e
d„ƒZe
d	„ƒZe
d
„ƒZ
e
d„ƒZd„Zd
„Zd„Zd„Zd„Zd„Zd„Ze
d„ƒZeddeƒd„ƒZedƒed„ƒZedƒd„ƒZedƒd„ƒZd„Zd„Z d„Z!d„Z"d„Z#d*d „Z%d!„Z&e'd"deƒd#„ƒZ(e'd$deƒd%„ƒZ)e'd&deƒd'„ƒZ*e'd(deƒd)„ƒZ+RS(+s,
	Plugin for ethernet card options tuning.
	cOs;tt|ƒj||Žd|_d|_tƒ|_dS(Ngš™™™™™©?i(tsuperRt__init__t_load_smallestt_level_stepsRt_cmd(tselftargstkwargs((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyRs		cCs“t|_tƒ|_tƒ|_tjdƒ}xB|jjdƒD].}|j	|j
ƒrC|jj|jƒqCqCWt
jdt|jƒƒdS(Ns(?!.*/virtual/.*)tnetsdevices: %s(tTruet_devices_supportedtsett
_free_devicest_assigned_devicestretcompilet_hardware_inventorytget_devicestmatchtdevice_pathtaddtsys_nametlogtdebugtstr(Rtre_not_virtualtdevice((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt
_init_devicess	cCs&g|D]}|jjd|ƒ^qS(NR(Rt
get_device(Rtdevicestx((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_get_device_objects$scCs€t|_|j|jdƒrXt|_|jjd|jƒ|_i|_	i|_
n$t|_d|_d|_	d|_
dS(NtdynamicR(
Rt_has_static_tuningt_option_booltoptionst_has_dynamic_tuningt_monitors_repositorytcreatetassigned_devicest
_load_monitort_idlet_statstFalsetNone(Rtinstance((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_instance_init's						cCs2|jdk	r.|jj|jƒd|_ndS(N(R.R2R+tdelete(RR3((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_instance_cleanup4scCs|j||ƒdS(N(t_instance_update_dynamic(RR3R ((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_instance_apply_dynamic9scCs®g|jj|ƒD]}t|ƒ^q}|dkr;dS||jkr]|j||ƒn|j|||ƒ|j||ƒ|j|}|j|}|ddkr|d|j	kr|d|j	krd|d<t
jd|ƒt|ƒj
dƒn^|ddkr_|ddks1|ddkr_d|d<t
jd|ƒt|ƒjƒnt
jd	||d|dfƒt
jd
||d|d|dfƒdS(Ntlevelitreadtwriteis%s: setting 100Mbpsids%s: setting max speeds %s load: read %0.2f, write %0.2fs$%s idle: read %d, write %d, level %d(R.tget_device_loadtintR2R0t_init_stats_and_idlet
_update_statst_update_idleR/R	RtinfoRt	set_speedt
set_max_speedR(RR3R tvaluetloadtstatstidle((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyR7<s&+

6
0
"cCsžidd6dd6dd6dd6dd6dd6dd6dd6dd	6dd
6dd6dd6dd
6dd6dd6dd6dd6dd6dd6dd6dd6dd6S(Nsadaptive-rxsadaptive-txsrx-usecss	rx-framessrx-usecs-irqs
rx-frames-irqstx-usecss	tx-framesstx-usecs-irqs
tx-frames-irqsstats-block-usecsspkt-rate-lowsrx-usecs-lows
rx-frames-lowstx-usecs-lows
tx-frames-lows
pkt-rate-highs
rx-usecs-highsrx-frames-highs
tx-usecs-highstx-frames-highssample-interval(R2(tcls((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_get_config_options_coalesceUs.cCsidd6dd6dd6S(Ntautonegtrxttx(R2(RH((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_get_config_options_pauseps
cCs idd6dd6dd6dd6S(NRKsrx-minisrx-jumboRL(R2(RH((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_get_config_options_ringvs
cCs5itd6dd6dd6dd6dd6dd6dd6S(NR&twake_on_lantnf_conntrack_hashsizetfeaturestcoalescetpausetring(RR2(RH((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_get_config_options}scCsm|jt|ƒjƒƒ}iddgd6d|dgd6|j|<idd6dd6dd	6|j|<dS(
NiitnewiitmaxR9R:R;(t_calc_speedRt
get_max_speedR0R/(RR3R t	max_speed((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyR>‰s,c
Cs|j|d|j|d<}||j|d<gt||ƒD]}|d|d^qA}||j|d<|j|d}gt||ƒD]}t|ƒ^q‘}	|	|j|d<t|dƒt|	dƒ|j|d<t|dƒt|	dƒ|j|d	<dS(
NRVtoldiitdiffRWR:iR;(R0tzipRWtfloat(
RR3R tnew_loadtold_loadtnew_oldR\told_max_loadtpairtmax_load((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyR?Žs .()cCs`xYddgD]K}|j|||jkrG|j||cd7<q
d|j||<q
WdS(NR:R;ii(R0RR/(RR3R t	operation((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyR@ scCs_||jkr[|j|ddkr[d|j|d<tjd|ƒt|ƒjƒndS(NR9is%s: setting max speed(R/RRARRC(RR3R ((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_instance_unapply_dynamic¨s&cCstd|dƒS(Ng333333ã?iig333333ƒ@g333333#A(R=(Rtspeed((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyRX®scCs¤ttjdd|ƒƒjƒ}t|ƒ}|ddkr^tjd|t|ƒfƒdS|dkrqtƒStt	t
|ddd…|ddd…ƒƒƒS(Ns (:\s*)|(\s+)|(\s*;\s*)|(\s*,\s*)t iisinvalid %s parameter: '%s'i(RRtsubtsplittlenRterrorR2tdicttlistR](RRDtcontexttvtlv((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_parse_config_parameters·s!cCsT|jjidd6dd6dd6dd6d	d
6dd6d
d6dd6dd6dd6dd6dd6dd6dd6dd6dd 6d!d"6d#d$6|ƒ}g|jd%ƒD]=}tt|ƒƒd&kr£tjd't|ƒƒr£|^q£}t|ƒd(krüdStgg|d)D]}tjd*t|ƒƒ^q
D]}t|ƒd(kr/|^q/ƒS(+Nsadaptive-rx:sAdaptive RX:s

adaptive-tx:s\s+TX:srx-frames-low:s
rx-frame-low:srx-frames-high:srx-frame-high:stx-frames-low:s
tx-frame-low:stx-frames-high:stx-frame-high:slro:slarge-receive-offload:srx:srx-checksumming:stx:stx-checksumming:ssg:sscatter-gather:stso:stcp-segmentation-offload:sufo:sudp-fragmentation-offload:sgso:sgeneric-segmentation-offload:sgro:sgeneric-receive-offload:srxvlan:srx-vlan-offload:stxvlan:stx-vlan-offload:sntuple:sntuple-filters:srxhash:sreceive-hashing:s
is
\[fixed\]$iis:\s*(	R
tmultiple_re_replaceRjRkRRtsearchR2Rm(RRDRptvltu((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_parse_device_parametersÄs0	ScCsdS(Ns,/sys/module/nf_conntrack/parameters/hashsize((R((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_nf_conntrack_hashsize_pathäsROt
per_devicecCs‚|dkrdStjddt|ƒƒ}tjdtd|ƒsVtjdƒdS|s~|jj	dd|d|gƒn|S(	Nt0tds^[s]+$sIncorrect 'wake_on_lan' value.tethtools-stwol(
R2RRiRRt
WOL_VALUESRtwarnR
texecute(RRDR tsim((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_set_wake_on_lanès
"cCspd}yRtjdtd|jjd|gƒdtjƒ}|rW|jdƒ}nWntk
rknX|S(Ns.*Wake-on:\s*([s]+).*R|i(	R2RRR~R
R€tStgrouptIOError(RR tignore_missingRDtm((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_get_wake_on_lan÷s6
RPcCsV|dkrdSt|ƒ}|dkrN|sJ|jj|jƒ|ƒn|SdSdS(Ni(R2R=R
t
write_to_fileRx(RRDRthashsize((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_set_nf_conntrack_hashsizescCs8|jj|jƒƒ}t|ƒdkr4t|ƒSdS(Ni(R
t	read_fileRxRkR=R2(RRD((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_get_nf_conntrack_hashsizes
cCs—|dkrtSt|jƒƒ}i|jd6|jd6|jd6}t||ƒjƒƒ}|j|ƒs“tjd|t	||ƒfƒt
StS(NRQRRRSRTsunknown %s parameter(s): %s(RRtkeysRIRMRNtissubsetRRlRR1(RRoR{tparamstsupported_gettert	supported((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_check_parameterss


!cCsÃ|jjidd6dd6dd6|ƒ}|jdƒd}g|D]+}|d	krDtjd
|ƒrD|^qD}tgg|D]}tjd|ƒ^q‚D]}t|ƒdkrž|^qžƒS(
NRJt
AutonegotiateRKtRXRLtTXs
its	\[fixed\]s:\s*i(R
RsRjRRtRmRk(RtstlR$((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_parse_pause_parameters%s	
8cCsÞtjd|dtjƒ}|d}|jjidd6dd6dd	6d
d6|ƒ}|jdƒ}g|D]}|d
krl|^ql}gg|D]}tjd|ƒ^q”D]}t|ƒdkr°|^q°}t|ƒS(Ns^Current hardware settings:$tflagsiRKR•srx-minisRX Minisrx-jumbosRX JumboRLR–s
R—s:\s*i(RRjt	MULTILINER
RsRkRm(RR˜taR™R$((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_parse_ring_parameters/s
	
%Jc	Csmt|jƒƒ}t|jƒƒ}||}x8|D]0}tjd|||fƒ|j|dƒq5WdS(sFilter unsupported parameters and log warnings about it

		Positional parameters:
		context -- context of change
		parameters -- parameters to change
		device -- name of device on which should be parameters set
		dev_params -- dictionary of currently known parameters of device
		s-%s parameter %s is not supported by device %sN(RRŽRtwarningtpopR2(	RRot
parametersR t
dev_paramstsupported_parameterstparameters_to_changetunsupported_parameterstparam((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_check_device_support<s	
	c
CsÚidd6dd6dd6dd6}||}|jjd	||gƒ\}}|d
kskt|ƒd
krodSi|jd6|jd6|jd6|jd6}||}||ƒ}	|dkrÖ|j||	ƒrÖdS|	S(Ns-cRRs-kRQs-aRSs-gRTR|i(R
R€RkR2RwRšRžR“(
RRoR tcontext2opttopttretRDtcontext2parsertparserR{((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_get_device_parametersSs"
!




c	Cs|dkst|ƒdkr"dS|j||ƒ}|dksS|j||ƒrWiS|rv|j||||ƒn|r
t|ƒdkr
tjd|t|ƒfƒidd6dd6dd6d	d
6}||}|jj	d||g|jj
|ƒdd
gƒn|S(Nissetting %s: %ss-CRRs-KRQs-ARSs-GRTR|t	no_errorsiP(R2RkRrR“R§RRRR
R€t	dict2list(	RRoRDR RR¢R{R¨R©((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_set_device_parameterscs"
5c
CsH|jd|d|ƒ}|r|j||ƒ}|j||||d|ƒ}t|ƒdkrdtSg|jƒD]$\}	}|	|krq|	|f^qq}
t|
ƒ}
|rñ|jj|ƒ|jj|
ƒk}|j	||||
d|ƒ|S|j
j|dj|jj|
ƒƒƒn(|j
j
|ƒ}|j|||tƒdS(Ntcommand_nametdevice_nameR¢iR Rh(t_storage_keyR­R°RkR1titemsRmR
R¯t_log_verification_resultt_storageRtjointgetR2(
RRotstartRDR tverifytstorage_keytparams_currentt
params_setR¦trelevant_params_currenttrestoriginal_value((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_custom_parametersvs8						RQcCs|jd||||ƒS(NRQ(RÁ(RR¹RDR RºR†((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt	_featuresšsRRcCs|jd||||ƒS(NRR(RÁ(RR¹RDR RºR†((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt	_coalescežsRScCs|jd||||ƒS(NRS(RÁ(RR¹RDR RºR†((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_pause¢sRTcCs|jd||||ƒS(NRT(RÁ(RR¹RDR RºR†((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt_ring¦sN(,t__name__t
__module__t__doc__RR!R%R4R6R8R7tclassmethodRIRMRNRUR>R?R@RfRXRrRwRxtcommand_setRR‚tcommand_getR1RˆR‹RR“RšRžR§R­R2R°RÁtcommand_customRÂRÃRÄRÅ(((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyR
sH				
										
	 	

		
	
			$(R—Rt
decoratorst
tuned.logsttunedttuned.utils.nettoolRttuned.utils.commandsRtosRtlogsR¸RR~tPluginR(((s</usr/lib/python2.7/site-packages/tuned/plugins/plugin_net.pyt<module>s

Back to Directory File Manager