From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 24B6992C1A for ; Thu, 23 Mar 2023 07:58:25 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 02B342E0BB for ; Thu, 23 Mar 2023 07:57:55 +0100 (CET) Received: from bastionodiso.odiso.net (bastionodiso.odiso.net [185.151.191.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Thu, 23 Mar 2023 07:57:54 +0100 (CET) Received: from kvmformation3.odiso.net (formationkvm3.odiso.net [10.3.94.12]) by bastionodiso.odiso.net (Postfix) with ESMTP id C774780CA; Thu, 23 Mar 2023 07:57:53 +0100 (CET) Received: by kvmformation3.odiso.net (Postfix, from userid 0) id C1A12241C82; Thu, 23 Mar 2023 07:57:53 +0100 (CET) From: Alexandre Derumier To: pve-devel@lists.proxmox.com Date: Thu, 23 Mar 2023 07:57:50 +0100 Message-Id: <20230323065750.17230-4-aderumier@odiso.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230323065750.17230-1-aderumier@odiso.com> References: <20230323065750.17230-1-aderumier@odiso.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.061 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% HEADER_FROM_DIFFERENT_DOMAINS 0.25 From and EnvelopeFrom 2nd level mail domains are different KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods NO_DNS_FOR_FROM 0.001 Envelope sender has no MX or A DNS records SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record Subject: [pve-devel] [PATCH pve-manager 1/1] ui: qemu : add tuning option X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Mar 2023 06:58:25 -0000 with memory allocator property Signed-off-by: Alexandre Derumier --- www/manager6/Makefile | 1 + www/manager6/Utils.js | 13 +++++++++ www/manager6/form/TuningSelector.js | 41 +++++++++++++++++++++++++++++ www/manager6/qemu/Options.js | 14 ++++++++++ 4 files changed, 69 insertions(+) create mode 100644 www/manager6/form/TuningSelector.js diff --git a/www/manager6/Makefile b/www/manager6/Makefile index b73b729a..c29bc87a 100644 --- a/www/manager6/Makefile +++ b/www/manager6/Makefile @@ -67,6 +67,7 @@ JSSRC= \ form/StorageSelector.js \ form/TFASelector.js \ form/TokenSelector.js \ + form/TuningSelector.js \ form/USBSelector.js \ form/UserSelector.js \ form/VLanField.js \ diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js index 7bf3955a..3c395a5c 100644 --- a/www/manager6/Utils.js +++ b/www/manager6/Utils.js @@ -545,6 +545,19 @@ Ext.define('PVE.Utils', { return output.join(', '); }, + render_tuning: function(values) { + let props = PVE.Parser.parsePropertyString(values); + if (Ext.Object.isEmpty(props)) { + return Proxmox.Utils.noneText; + } + + let output = []; + if (props.allocator === 'tcmalloc') { + output.push('Memory allocator: ' + props.allocator); + } + return output.join(', '); + }, + // fixme: auto-generate this // for now, please keep in sync with PVE::Tools::kvmkeymaps kvm_keymaps: { diff --git a/www/manager6/form/TuningSelector.js b/www/manager6/form/TuningSelector.js new file mode 100644 index 00000000..d967dc29 --- /dev/null +++ b/www/manager6/form/TuningSelector.js @@ -0,0 +1,41 @@ +Ext.define('PVE.form.TuningSelector', { + extend: 'Proxmox.panel.InputPanel', + alias: 'widget.pveTuningSelector', + + viewModel: {}, + + items: [ + { + xtype: 'proxmoxKVComboBox', + itemId: 'allocator', + name: 'allocator', + value: 'system', + fieldLabel: 'Memory Allocator', + comboItems: [ + ['system', 'system'], + ['tcmalloc', 'tcmalloc'], + ], + }, + ], + + onGetValues: function(values) { + var ret = {}; + + if (values.allocator !== "system") { + ret.allocator = values.allocator; + } + + if (Ext.Object.isEmpty(ret)) { + return { 'delete': 'tuning' }; + } + var tuning_props = PVE.Parser.printPropertyString(ret); + return { tuning: tuning_props }; + }, + + setValues: function(values) { + if (values.tuning) { + var tuning = PVE.Parser.parsePropertyString(values.tuning); + this.callParent([tuning]); + } + }, +}); diff --git a/www/manager6/qemu/Options.js b/www/manager6/qemu/Options.js index 7b112400..53972d18 100644 --- a/www/manager6/qemu/Options.js +++ b/www/manager6/qemu/Options.js @@ -338,6 +338,20 @@ Ext.define('PVE.qemu.Options', { }, } : undefined, }, + tuning: { + header: gettext('Tuning'), + defaultValue: false, + renderer: PVE.Utils.render_tuning, + editor: caps.vms['VM.Config.Options'] ? { + xtype: 'proxmoxWindowEdit', + subject: gettext('Tuning'), + onlineHelp: 'chapter_virtual_machines', // FIXME: use 'qm_tuning' once available + items: { + xtype: 'pveTuningSelector', + name: 'tuning', + }, + } : undefined, + }, hookscript: { header: gettext('Hookscript'), }, -- 2.30.2