summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2018-08-23 10:16:00 -0700
committerDaniel Bevenius <daniel.bevenius@gmail.com>2018-09-19 11:07:01 +0200
commit9d71e6a6071134789a30471302d9735250dea96c (patch)
tree67a21cf09e3f5e3dd152ba22717ace87860e2f23
parent6e746f1a55e5d94f1a8330d3436a64ed8d6f639b (diff)
downloadandroid-node-v8-9d71e6a6071134789a30471302d9735250dea96c.tar.gz
android-node-v8-9d71e6a6071134789a30471302d9735250dea96c.tar.bz2
android-node-v8-9d71e6a6071134789a30471302d9735250dea96c.zip
src: deprecate global COUNTER_* and remove perfctr
To support Performance Counters on Windows, a number of global `COUNTER_` methods were added that are undocumented and really only intended to be used internally by Node.js. Unfortunately, the perfctr support apparently hasn't even worked for quite a while and no one has even complained. This removes the perfctr support and replaces the global functions with deprecated non-ops for now, with the intent of removing those outright in the next major release cycle. PR-URL: https://github.com/nodejs/node/pull/22485 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: João Reis <reis@janeasystems.com>
-rwxr-xr-xconfigure.py18
-rw-r--r--lib/_http_client.js2
-rw-r--r--lib/_http_server.js2
-rw-r--r--lib/internal/bootstrap/node.js27
-rw-r--r--lib/net.js2
-rw-r--r--node.gyp58
-rw-r--r--src/node.cc8
-rw-r--r--src/node_counters.cc145
-rw-r--r--src/node_counters.h59
-rw-r--r--src/node_internals.h2
-rw-r--r--src/node_win32_perfctr_provider.cc345
-rw-r--r--src/node_win32_perfctr_provider.h58
-rw-r--r--src/noperfctr_macros.py9
-rw-r--r--src/res/node_perfctr_provider.man107
-rw-r--r--src/stream_wrap.cc12
-rw-r--r--src/tls_wrap.cc3
-rw-r--r--tools/msvs/msi/i18n/de-de.wxl3
-rw-r--r--tools/msvs/msi/i18n/en-us.wxl3
-rw-r--r--tools/msvs/msi/i18n/it-it.wxl3
-rw-r--r--tools/msvs/msi/i18n/zh-cn.wxl3
-rw-r--r--tools/msvs/msi/nodemsi.wixproj8
-rwxr-xr-xtools/msvs/msi/product.wxs15
-rw-r--r--vcbuild.bat12
23 files changed, 33 insertions, 871 deletions
diff --git a/configure.py b/configure.py
index da696a92b4..349dca827e 100755
--- a/configure.py
+++ b/configure.py
@@ -455,11 +455,6 @@ http2_optgroup.add_option('--debug-nghttp2',
parser.add_option_group(http2_optgroup)
-parser.add_option('--with-perfctr',
- action='store_true',
- dest='with_perfctr',
- help='build with performance counters (default is true on Windows)')
-
parser.add_option('--without-dtrace',
action='store_true',
dest='without_dtrace',
@@ -475,11 +470,6 @@ parser.add_option('--without-npm',
dest='without_npm',
help='do not install the bundled npm (package manager)')
-parser.add_option('--without-perfctr',
- action='store_true',
- dest='without_perfctr',
- help='build without performance counters')
-
# Dummy option for backwards compatibility
parser.add_option('--with-snapshot',
action='store_true',
@@ -1018,14 +1008,6 @@ def configure_node(o):
else:
o['variables']['node_use_etw'] = 'false'
- # By default, enable Performance counters on Windows.
- if flavor == 'win':
- o['variables']['node_use_perfctr'] = b(not options.without_perfctr)
- elif options.with_perfctr:
- raise Exception('Performance counter is only supported on Windows.')
- else:
- o['variables']['node_use_perfctr'] = 'false'
-
o['variables']['node_with_ltcg'] = b(options.with_ltcg)
if flavor != 'win' and options.with_ltcg:
raise Exception('Link Time Code Generation is only supported on Windows.')
diff --git a/lib/_http_client.js b/lib/_http_client.js
index 372ac0f953..cbc7774489 100644
--- a/lib/_http_client.js
+++ b/lib/_http_client.js
@@ -285,7 +285,6 @@ util.inherits(ClientRequest, OutgoingMessage);
ClientRequest.prototype._finish = function _finish() {
DTRACE_HTTP_CLIENT_REQUEST(this, this.connection);
- COUNTER_HTTP_CLIENT_REQUEST();
OutgoingMessage.prototype._finish.call(this);
};
@@ -554,7 +553,6 @@ function parserOnIncomingClient(res, shouldKeepAlive) {
}
DTRACE_HTTP_CLIENT_RESPONSE(socket, req);
- COUNTER_HTTP_CLIENT_RESPONSE();
req.res = res;
res.req = req;
diff --git a/lib/_http_server.js b/lib/_http_server.js
index 6e1b2c90e5..b216eab32a 100644
--- a/lib/_http_server.js
+++ b/lib/_http_server.js
@@ -140,7 +140,6 @@ util.inherits(ServerResponse, OutgoingMessage);
ServerResponse.prototype._finish = function _finish() {
DTRACE_HTTP_SERVER_RESPONSE(this.connection);
- COUNTER_HTTP_SERVER_RESPONSE();
OutgoingMessage.prototype._finish.call(this);
};
@@ -624,7 +623,6 @@ function parserOnIncoming(server, socket, state, req, keepAlive) {
res.shouldKeepAlive = keepAlive;
DTRACE_HTTP_SERVER_REQUEST(req, socket);
- COUNTER_HTTP_SERVER_REQUEST();
if (socket._httpMessage) {
// There are already pending outgoing res, append.
diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js
index d6ed79254d..997323d810 100644
--- a/lib/internal/bootstrap/node.js
+++ b/lib/internal/bootstrap/node.js
@@ -172,11 +172,11 @@
NativeModule.require('internal/process/esm_loader').setup();
}
+ const { deprecate } = NativeModule.require('internal/util');
{
// Install legacy getters on the `util` binding for typechecking.
// TODO(addaleax): Turn into a full runtime deprecation.
const { pendingDeprecation } = process.binding('config');
- const { deprecate } = NativeModule.require('internal/util');
const utilBinding = internalBinding('util');
const types = internalBinding('types');
for (const name of [
@@ -195,6 +195,31 @@
}
}
+ // TODO(jasnell): The following have been globals since around 2012.
+ // That's just silly. The underlying perfctr support has been removed
+ // so these are now deprecated non-ops that can be removed after one
+ // major release cycle.
+ if (process.platform === 'win32') {
+ function noop() {}
+ const names = [
+ 'NET_SERVER_CONNECTION',
+ 'NET_SERVER_CONNECTION_CLOSE',
+ 'HTTP_SERVER_REQUEST',
+ 'HTTP_SERVER_RESPONSE',
+ 'HTTP_CLIENT_REQUEST',
+ 'HTTP_CLIENT_RESPONSE'
+ ];
+ for (var n = 0; n < names.length; n++) {
+ Object.defineProperty(global, `COUNTER_${names[n]}`, {
+ configurable: true,
+ enumerable: false,
+ value: deprecate(noop,
+ `COUNTER_${names[n]}() is deprecated.`,
+ 'DEP00XX')
+ });
+ }
+ }
+
perf.markMilestone(NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE);
setupAllowedFlags();
diff --git a/lib/net.js b/lib/net.js
index 981ee876ba..fdf7e8a1d0 100644
--- a/lib/net.js
+++ b/lib/net.js
@@ -615,7 +615,6 @@ Socket.prototype._destroy = function(exception, cb) {
cb(exception);
if (this._server) {
- COUNTER_NET_SERVER_CONNECTION_CLOSE(this);
debug('has server');
this._server._connections--;
if (this._server._emitCloseIfDrained) {
@@ -1522,7 +1521,6 @@ function onconnection(err, clientHandle) {
socket._server = self;
DTRACE_NET_SERVER_CONNECTION(socket);
- COUNTER_NET_SERVER_CONNECTION(socket);
self.emit('connection', socket);
}
diff --git a/node.gyp b/node.gyp
index d52748ec2b..77d24d142e 100644
--- a/node.gyp
+++ b/node.gyp
@@ -4,7 +4,6 @@
'v8_trace_maps%': 0,
'node_use_dtrace%': 'false',
'node_use_etw%': 'false',
- 'node_use_perfctr%': 'false',
'node_no_browser_globals%': 'false',
'node_code_cache_path%': '',
'node_use_v8_platform%': 'true',
@@ -285,11 +284,6 @@
'sources': [
'tools/msvs/genfiles/node_etw_provider.rc'
],
- }],
- [ 'node_use_perfctr=="true"', {
- 'sources': [
- 'tools/msvs/genfiles/node_perfctr_provider.rc',
- ],
}]
],
}],
@@ -569,28 +563,6 @@
}],
],
}],
- [ 'node_use_perfctr=="true"', {
- 'defines': [ 'HAVE_PERFCTR=1' ],
- 'dependencies': [ 'node_perfctr' ],
- 'include_dirs': [
- 'src',
- 'tools/msvs/genfiles',
- '<(SHARED_INTERMEDIATE_DIR)' # for node_natives.h
- ],
- 'sources': [
- 'src/node_win32_perfctr_provider.h',
- 'src/node_win32_perfctr_provider.cc',
- 'src/node_counters.cc',
- 'src/node_counters.h',
- ],
- 'conditions': [
- ['node_intermediate_lib_type != "static_library"', {
- 'sources': [
- 'tools/msvs/genfiles/node_perfctr_provider.rc',
- ],
- }],
- ],
- }],
[ 'node_use_dtrace=="true"', {
'defines': [ 'HAVE_DTRACE=1' ],
'dependencies': [
@@ -714,30 +686,6 @@
} ]
]
},
- # generate perf counter header and resource files
- {
- 'target_name': 'node_perfctr',
- 'type': 'none',
- 'conditions': [
- [ 'node_use_perfctr=="true"', {
- 'actions': [
- {
- 'action_name': 'node_perfctr_man',
- 'inputs': [ 'src/res/node_perfctr_provider.man' ],
- 'outputs': [
- 'tools/msvs/genfiles/node_perfctr_provider.h',
- 'tools/msvs/genfiles/node_perfctr_provider.rc',
- 'tools/msvs/genfiles/MSG00001.BIN',
- ],
- 'action': [ 'ctrpp <@(_inputs) '
- '-o tools/msvs/genfiles/node_perfctr_provider.h '
- '-rc tools/msvs/genfiles/node_perfctr_provider.rc'
- ]
- },
- ],
- } ]
- ]
- },
{
'target_name': 'node_js2c',
'type': 'none',
@@ -758,9 +706,6 @@
[ 'node_use_dtrace=="false" and node_use_etw=="false"', {
'inputs': [ 'src/notrace_macros.py' ]
}],
- [ 'node_use_perfctr=="false"', {
- 'inputs': [ 'src/noperfctr_macros.py' ]
- }],
[ 'node_debug_lib=="false"', {
'inputs': [ 'tools/nodcheck_macros.py' ]
}],
@@ -989,9 +934,6 @@
'HAVE_OPENSSL=1',
],
}],
- [ 'node_use_perfctr=="true"', {
- 'defines': [ 'HAVE_PERFCTR=1' ],
- }],
['v8_enable_inspector==1', {
'sources': [
'test/cctest/test_inspector_socket.cc',
diff --git a/src/node.cc b/src/node.cc
index cd51734781..5e43361923 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -31,10 +31,6 @@
#include "node_context_data.h"
#include "tracing/traced_value.h"
-#if defined HAVE_PERFCTR
-#include "node_counters.h"
-#endif
-
#if HAVE_OPENSSL
#include "node_crypto.h"
#endif
@@ -2152,10 +2148,6 @@ void LoadEnvironment(Environment* env) {
InitDTrace(env, global);
#endif
-#if defined HAVE_PERFCTR
- InitPerfCounters(env, global);
-#endif
-
// Enable handling of uncaught exceptions
// (FatalException(), break on uncaught exception in debugger)
//
diff --git a/src/node_counters.cc b/src/node_counters.cc
deleted file mode 100644
index 99b3b8fd8b..0000000000
--- a/src/node_counters.cc
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-#include "node_counters.h"
-#include "node_internals.h"
-#include "uv.h"
-#include "env-inl.h"
-
-#include <string.h>
-
-
-namespace node {
-
-using v8::FunctionCallbackInfo;
-using v8::FunctionTemplate;
-using v8::GCCallbackFlags;
-using v8::GCType;
-using v8::HandleScope;
-using v8::Isolate;
-using v8::Local;
-using v8::Object;
-using v8::String;
-using v8::Value;
-
-static uint64_t counter_gc_start_time;
-static uint64_t counter_gc_end_time;
-
-
-void COUNTER_NET_SERVER_CONNECTION(const FunctionCallbackInfo<Value>&) {
- NODE_COUNT_SERVER_CONN_OPEN();
-}
-
-
-void COUNTER_NET_SERVER_CONNECTION_CLOSE(const FunctionCallbackInfo<Value>&) {
- NODE_COUNT_SERVER_CONN_CLOSE();
-}
-
-
-void COUNTER_HTTP_SERVER_REQUEST(const FunctionCallbackInfo<Value>&) {
- NODE_COUNT_HTTP_SERVER_REQUEST();
-}
-
-
-void COUNTER_HTTP_SERVER_RESPONSE(const FunctionCallbackInfo<Value>&) {
- NODE_COUNT_HTTP_SERVER_RESPONSE();
-}
-
-
-void COUNTER_HTTP_CLIENT_REQUEST(const FunctionCallbackInfo<Value>&) {
- NODE_COUNT_HTTP_CLIENT_REQUEST();
-}
-
-
-void COUNTER_HTTP_CLIENT_RESPONSE(const FunctionCallbackInfo<Value>&) {
- NODE_COUNT_HTTP_CLIENT_RESPONSE();
-}
-
-
-static void counter_gc_start(Isolate* isolate,
- GCType type,
- GCCallbackFlags flags) {
- counter_gc_start_time = NODE_COUNT_GET_GC_RAWTIME();
-}
-
-
-static void counter_gc_done(Isolate* isolate,
- GCType type,
- GCCallbackFlags flags) {
- uint64_t endgc = NODE_COUNT_GET_GC_RAWTIME();
- if (endgc != 0) {
- uint64_t totalperiod = endgc - counter_gc_end_time;
- uint64_t gcperiod = endgc - counter_gc_start_time;
-
- if (totalperiod > 0) {
- unsigned int percent = static_cast<unsigned int>(
- (gcperiod * 100) / totalperiod);
-
- NODE_COUNT_GC_PERCENTTIME(percent);
- counter_gc_end_time = endgc;
- }
- }
-}
-
-
-void InitPerfCounters(Environment* env, Local<Object> target) {
- HandleScope scope(env->isolate());
-
- static struct {
- const char* name;
- void (*func)(const FunctionCallbackInfo<Value>&);
- } tab[] = {
-#define NODE_PROBE(name) #name, name
- { NODE_PROBE(COUNTER_NET_SERVER_CONNECTION) },
- { NODE_PROBE(COUNTER_NET_SERVER_CONNECTION_CLOSE) },
- { NODE_PROBE(COUNTER_HTTP_SERVER_REQUEST) },
- { NODE_PROBE(COUNTER_HTTP_SERVER_RESPONSE) },
- { NODE_PROBE(COUNTER_HTTP_CLIENT_REQUEST) },
- { NODE_PROBE(COUNTER_HTTP_CLIENT_RESPONSE) }
-#undef NODE_PROBE
- };
-
- for (size_t i = 0; i < arraysize(tab); i++) {
- Local<String> key = OneByteString(env->isolate(), tab[i].name);
- Local<Value> val = env->NewFunctionTemplate(tab[i].func)->GetFunction();
- target->Set(key, val);
- }
-
- // Only Windows performance counters supported
- // To enable other OS, use conditional compilation here
- InitPerfCountersWin32();
-
- // init times for GC percent calculation and hook callbacks
- counter_gc_start_time = NODE_COUNT_GET_GC_RAWTIME();
- counter_gc_end_time = counter_gc_start_time;
-
- env->isolate()->AddGCPrologueCallback(counter_gc_start);
- env->isolate()->AddGCEpilogueCallback(counter_gc_done);
-}
-
-
-void TermPerfCounters(Local<Object> target) {
- // Only Windows performance counters supported
- // To enable other OS, use conditional compilation here
- TermPerfCountersWin32();
-}
-
-} // namespace node
diff --git a/src/node_counters.h b/src/node_counters.h
deleted file mode 100644
index c8a1a88f0b..0000000000
--- a/src/node_counters.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-#ifndef SRC_NODE_COUNTERS_H_
-#define SRC_NODE_COUNTERS_H_
-
-#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
-
-#include "node_internals.h"
-
-#ifdef HAVE_PERFCTR
-#include "node_win32_perfctr_provider.h"
-#else
-#define NODE_COUNTER_ENABLED() (false)
-#define NODE_COUNT_GC_PERCENTTIME(percent) do { } while (false)
-#define NODE_COUNT_GET_GC_RAWTIME() do { } while (false)
-#define NODE_COUNT_HTTP_CLIENT_REQUEST() do { } while (false)
-#define NODE_COUNT_HTTP_CLIENT_RESPONSE() do { } while (false)
-#define NODE_COUNT_HTTP_SERVER_REQUEST() do { } while (false)
-#define NODE_COUNT_HTTP_SERVER_RESPONSE() do { } while (false)
-#define NODE_COUNT_NET_BYTES_RECV(bytes) do { } while (false)
-#define NODE_COUNT_NET_BYTES_SENT(bytes) do { } while (false)
-#define NODE_COUNT_PIPE_BYTES_RECV(bytes) do { } while (false)
-#define NODE_COUNT_PIPE_BYTES_SENT(bytes) do { } while (false)
-#define NODE_COUNT_SERVER_CONN_CLOSE() do { } while (false)
-#define NODE_COUNT_SERVER_CONN_OPEN() do { } while (false)
-#endif
-
-#include "v8.h"
-#include "env.h"
-
-namespace node {
-
-void InitPerfCounters(Environment* env, v8::Local<v8::Object> target);
-void TermPerfCounters(v8::Local<v8::Object> target);
-
-} // namespace node
-
-#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
-
-#endif // SRC_NODE_COUNTERS_H_
diff --git a/src/node_internals.h b/src/node_internals.h
index 0bf08210a6..9a34825b1e 100644
--- a/src/node_internals.h
+++ b/src/node_internals.h
@@ -132,7 +132,7 @@ struct sockaddr;
V(string_decoder) \
V(symbols) \
V(tcp_wrap) \
- V(timers) \
+ V(timers) \
V(trace_events) \
V(tty_wrap) \
V(types) \
diff --git a/src/node_win32_perfctr_provider.cc b/src/node_win32_perfctr_provider.cc
deleted file mode 100644
index 7e94db9fed..0000000000
--- a/src/node_win32_perfctr_provider.cc
+++ /dev/null
@@ -1,345 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-#define __INIT_node_perfctr_provider_IMP
-#include "node_counters.h"
-#include "node_win32_perfctr_provider.h"
-
-#include <perflib.h>
-
-#include "node_perfctr_provider.h"
-
-
-typedef ULONG (WINAPI* PerfStartProviderExFunc)(
- __in LPGUID ProviderGuid,
- __in_opt PPERF_PROVIDER_CONTEXT ProviderContext,
- __out PHANDLE Provider);
-
-typedef ULONG (WINAPI* PerfStopProviderFunc)(
- __in HANDLE ProviderHandle);
-
-typedef ULONG (WINAPI* PerfSetCounterSetInfoFunc)(
- __in HANDLE ProviderHandle,
- __inout_bcount(TemplateSize) PPERF_COUNTERSET_INFO Template,
- __in ULONG TemplateSize);
-
-typedef PPERF_COUNTERSET_INSTANCE (WINAPI* PerfCreateInstanceFunc)(
- __in HANDLE ProviderHandle,
- __in LPCGUID CounterSetGuid,
- __in PCWSTR Name,
- __in ULONG Id);
-
-typedef ULONG (WINAPI* PerfDeleteInstanceFunc)(
- __in HANDLE Provider,
- __in PPERF_COUNTERSET_INSTANCE InstanceBlock);
-
-typedef ULONG (WINAPI* PerfSetULongCounterValueFunc)(
- __in HANDLE Provider,
- __inout PPERF_COUNTERSET_INSTANCE Instance,
- __in ULONG CounterId,
- __in ULONG Value);
-
-typedef ULONG (WINAPI* PerfSetULongLongCounterValueFunc)(
- __in HANDLE Provider,
- __inout PPERF_COUNTERSET_INSTANCE Instance,
- __in ULONG CounterId,
- __in ULONGLONG Value);
-
-typedef ULONG (WINAPI* PerfIncrementULongCounterValueFunc)(
- __in HANDLE Provider,
- __inout PPERF_COUNTERSET_INSTANCE Instance,
- __in ULONG CounterId,
- __in ULONG Value);
-
-typedef ULONG (WINAPI* PerfIncrementULongLongCounterValueFunc)(
- __in HANDLE Provider,
- __inout PPERF_COUNTERSET_INSTANCE Instance,
- __in ULONG CounterId,
- __in ULONGLONG Value);
-
-typedef ULONG (WINAPI* PerfDecrementULongCounterValueFunc)(
- __in HANDLE Provider,
- __inout PPERF_COUNTERSET_INSTANCE Instance,
- __in ULONG CounterId,
- __in ULONG Value);
-
-typedef ULONG (WINAPI* PerfDecrementULongLongCounterValueFunc)(
- __in HANDLE Provider,
- __inout PPERF_COUNTERSET_INSTANCE Instance,
- __in ULONG CounterId,
- __in ULONGLONG Value);
-
-
-HMODULE advapimod;
-PerfStartProviderExFunc perfctr_startProvider;
-PerfStopProviderFunc perfctr_stopProvider;
-PerfSetCounterSetInfoFunc perfctr_setCounterSetInfo;
-PerfCreateInstanceFunc perfctr_createInstance;
-PerfDeleteInstanceFunc perfctr_deleteInstance;
-PerfSetULongCounterValueFunc perfctr_setULongValue;
-PerfSetULongLongCounterValueFunc perfctr_setULongLongValue;
-PerfIncrementULongCounterValueFunc perfctr_incrementULongValue;
-PerfIncrementULongLongCounterValueFunc perfctr_incrementULongLongValue;
-PerfDecrementULongCounterValueFunc perfctr_decrementULongValue;
-PerfDecrementULongLongCounterValueFunc perfctr_decrementULongLongValue;
-
-PPERF_COUNTERSET_INSTANCE perfctr_instance;
-
-
-#define NODE_COUNTER_HTTP_SERVER_REQUEST 1
-#define NODE_COUNTER_HTTP_SERVER_RESPONSE 2
-#define NODE_COUNTER_HTTP_CLIENT_REQUEST 3
-#define NODE_COUNTER_HTTP_CLIENT_RESPONSE 4
-#define NODE_COUNTER_SERVER_CONNS 5
-#define NODE_COUNTER_NET_BYTES_SENT 6
-#define NODE_COUNTER_NET_BYTES_RECV 7
-#define NODE_COUNTER_GC_PERCENTTIME 8
-#define NODE_COUNTER_PIPE_BYTES_SENT 9
-#define NODE_COUNTER_PIPE_BYTES_RECV 10
-
-
-namespace node {
-
-
-HANDLE NodeCounterProvider = nullptr;
-
-void InitPerfCountersWin32() {
- ULONG status;
- PERF_PROVIDER_CONTEXT providerContext;
-
- // create instance name using pid
-#define INST_MAX_LEN 32
-#define INST_PREFIX_LEN 5
-#define INST_PREFIX L"node_"
-
- wchar_t Inst[INST_MAX_LEN];
- DWORD pid = GetCurrentProcessId();
- wcscpy_s(Inst, INST_MAX_LEN, INST_PREFIX);
- _itow_s(pid, Inst + INST_PREFIX_LEN, INST_MAX_LEN - INST_PREFIX_LEN, 10);
-
- advapimod = LoadLibraryW(L"advapi32.dll");
- if (advapimod) {
- perfctr_startProvider = (PerfStartProviderExFunc)
- GetProcAddress(advapimod, "PerfStartProviderEx");
- perfctr_stopProvider = (PerfStopProviderFunc)
- GetProcAddress(advapimod, "PerfStopProvider");
- perfctr_setCounterSetInfo = (PerfSetCounterSetInfoFunc)
- GetProcAddress(advapimod, "PerfSetCounterSetInfo");
- perfctr_createInstance = (PerfCreateInstanceFunc)
- GetProcAddress(advapimod, "PerfCreateInstance");
- perfctr_deleteInstance = (PerfDeleteInstanceFunc)
- GetProcAddress(advapimod, "PerfDeleteInstance");
- perfctr_setULongValue = (PerfSetULongCounterValueFunc)
- GetProcAddress(advapimod, "PerfSetULongCounterValue");
- perfctr_setULongLongValue = (PerfSetULongLongCounterValueFunc)
- GetProcAddress(advapimod, "PerfSetULongLongCounterValue");
- perfctr_incrementULongValue = (PerfIncrementULongCounterValueFunc)
- GetProcAddress(advapimod, "PerfIncrementULongCounterValue");
- perfctr_incrementULongLongValue = (PerfIncrementULongLongCounterValueFunc)
- GetProcAddress(advapimod, "PerfIncrementULongLongCounterValue");
- perfctr_decrementULongValue = (PerfDecrementULongCounterValueFunc)
- GetProcAddress(advapimod, "PerfDecrementULongCounterValue");
- perfctr_decrementULongLongValue = (PerfDecrementULongLongCounterValueFunc)
- GetProcAddress(advapimod, "PerfDecrementULongLongCounterValue");
-
- ZeroMemory(&providerContext, sizeof(providerContext));
- providerContext.ContextSize = sizeof(providerContext);
-
- if (!perfctr_startProvider ||
- !perfctr_setCounterSetInfo ||
- !perfctr_createInstance) {
- NodeCounterProvider = nullptr;
- return;
- }
-
- status = perfctr_startProvider(&NodeCounterSetGuid,
- &providerContext,
- &NodeCounterProvider);
- if (status != ERROR_SUCCESS) {
- NodeCounterProvider = nullptr;
- return;
- }
-
- status = perfctr_setCounterSetInfo(NodeCounterProvider,
- &NodeCounterSetInfo.CounterSet,
- sizeof(NodeCounterSetInfo.CounterSet));
- if (status != ERROR_SUCCESS) {
- perfctr_stopProvider(NodeCounterProvider);
- NodeCounterProvider = nullptr;
- return;
- }
-
- perfctr_instance = perfctr_createInstance(NodeCounterProvider,
- &NodeCounterSetGuid,
- Inst,
- 1);
- if (perfctr_instance == nullptr) {
- perfctr_stopProvider(NodeCounterProvider);
- NodeCounterProvider = nullptr;
- }
- }
-}
-
-
-void TermPerfCountersWin32() {
- if (NodeCounterProvider != nullptr &&
- perfctr_stopProvider != nullptr) {
- perfctr_stopProvider(NodeCounterProvider);
- NodeCounterProvider = nullptr;
- }
-
- if (advapimod) {
- FreeLibrary(advapimod);
- advapimod = nullptr;
- }
-}
-
-
-void NODE_COUNT_HTTP_SERVER_REQUEST() {
- if (NodeCounterProvider != nullptr &&
- perfctr_incrementULongValue != nullptr) {
- perfctr_incrementULongValue(NodeCounterProvider,
- perfctr_instance,
- NODE_COUNTER_HTTP_SERVER_REQUEST,
- 1);
- }
-}
-
-
-void NODE_COUNT_HTTP_SERVER_RESPONSE() {
- if (NodeCounterProvider != nullptr &&
- perfctr_incrementULongValue != nullptr) {
- perfctr_incrementULongValue(NodeCounterProvider,
- perfctr_instance,
- NODE_COUNTER_HTTP_SERVER_RESPONSE,
- 1);
- }
-}
-
-
-void NODE_COUNT_HTTP_CLIENT_REQUEST() {
- if (NodeCounterProvider != nullptr &&
- perfctr_incrementULongValue != nullptr) {
- perfctr_incrementULongValue(NodeCounterProvider,
- perfctr_instance,
- NODE_COUNTER_HTTP_CLIENT_REQUEST,
- 1);
- }
-}
-
-
-void NODE_COUNT_HTTP_CLIENT_RESPONSE() {
- if (NodeCounterProvider != nullptr &&
- perfctr_incrementULongValue != nullptr) {
- perfctr_incrementULongValue(NodeCounterProvider,
- perfctr_instance,
- NODE_COUNTER_HTTP_CLIENT_RESPONSE,
- 1);
- }
-}
-
-
-void NODE_COUNT_SERVER_CONN_OPEN() {
- if (NodeCounterProvider != nullptr &&
- perfctr_incrementULongValue != nullptr) {
- perfctr_incrementULongValue(NodeCounterProvider,
- perfctr_instance,
- NODE_COUNTER_SERVER_CONNS,
- 1);
- }
-}
-
-
-void NODE_COUNT_SERVER_CONN_CLOSE() {
- if (NodeCounterProvider != nullptr &&
- perfctr_decrementULongValue != nullptr) {
- perfctr_decrementULongValue(NodeCounterProvider,
- perfctr_instance,
- NODE_COUNTER_SERVER_CONNS,
- 1);
- }
-}
-
-
-void NODE_COUNT_NET_BYTES_SENT(int bytes) {
- if (NodeCounterProvider != nullptr &&
- perfctr_incrementULongLongValue != nullptr) {
- perfctr_incrementULongLongValue(NodeCounterProvider,
- perfctr_instance,
- NODE_COUNTER_NET_BYTES_SENT,
- static_cast<ULONGLONG>(bytes));
- }
-}
-
-
-void NODE_COUNT_NET_BYTES_RECV(int bytes) {
- if (NodeCounterProvider != nullptr &&
- perfctr_incrementULongLongValue != nullptr) {
- perfctr_incrementULongLongValue(NodeCounterProvider,
- perfctr_instance,
- NODE_COUNTER_NET_BYTES_RECV,
- static_cast<ULONGLONG>(bytes));
- }
-}
-
-
-uint64_t NODE_COUNT_GET_GC_RAWTIME() {
- LARGE_INTEGER timegc;
- if (QueryPerformanceCounter(&timegc)) {
- return timegc.QuadPart;
- } else {
- return static_cast<uint64_t>(GetTickCount());
- }
-}
-
-
-void NODE_COUNT_GC_PERCENTTIME(unsigned int percent) {
- if (NodeCounterProvider != nullptr && perfctr_setULongValue != nullptr) {
- perfctr_setULongValue(NodeCounterProvider,
- perfctr_instance,
- NODE_COUNTER_GC_PERCENTTIME,
- percent);
- }
-}
-
-
-void NODE_COUNT_PIPE_BYTES_SENT(int bytes) {
- if (NodeCounterProvider != nullptr &&
- perfctr_incrementULongLongValue != nullptr) {
- perfctr_incrementULongLongValue(NodeCounterProvider,
- perfctr_instance,
- NODE_COUNTER_PIPE_BYTES_SENT,
- static_cast<ULONGLONG>(bytes));
- }
-}
-
-
-void NODE_COUNT_PIPE_BYTES_RECV(int bytes) {
- if (NodeCounterProvider != nullptr &&
- perfctr_incrementULongLongValue != nullptr) {
- perfctr_incrementULongLongValue(NodeCounterProvider,
- perfctr_instance,
- NODE_COUNTER_PIPE_BYTES_RECV,
- static_cast<ULONGLONG>(bytes));
- }
-}
-
-} // namespace node
diff --git a/src/node_win32_perfctr_provider.h b/src/node_win32_perfctr_provider.h
deleted file mode 100644
index 35185aa187..0000000000
--- a/src/node_win32_perfctr_provider.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-#ifndef SRC_NODE_WIN32_PERFCTR_PROVIDER_H_
-#define SRC_NODE_WIN32_PERFCTR_PROVIDER_H_
-
-#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
-
-#if defined(_MSC_VER)
-# define INLINE __forceinline
-#else
-# define INLINE inline
-#endif
-
-namespace node {
-
-extern HANDLE NodeCounterProvider;
-
-INLINE bool NODE_COUNTER_ENABLED() { return NodeCounterProvider != nullptr; }
-void NODE_COUNT_HTTP_SERVER_REQUEST();
-void NODE_COUNT_HTTP_SERVER_RESPONSE();
-void NODE_COUNT_HTTP_CLIENT_REQUEST();
-void NODE_COUNT_HTTP_CLIENT_RESPONSE();
-void NODE_COUNT_SERVER_CONN_OPEN();
-void NODE_COUNT_SERVER_CONN_CLOSE();
-void NODE_COUNT_NET_BYTES_SENT(int bytes);
-void NODE_COUNT_NET_BYTES_RECV(int bytes);
-uint64_t NODE_COUNT_GET_GC_RAWTIME();
-void NODE_COUNT_GC_PERCENTTIME(unsigned int percent);
-void NODE_COUNT_PIPE_BYTES_SENT(int bytes);
-void NODE_COUNT_PIPE_BYTES_RECV(int bytes);
-
-void InitPerfCountersWin32();
-void TermPerfCountersWin32();
-
-} // namespace node
-
-#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
-
-#endif // SRC_NODE_WIN32_PERFCTR_PROVIDER_H_
diff --git a/src/noperfctr_macros.py b/src/noperfctr_macros.py
deleted file mode 100644
index 2f7e3cbf82..0000000000
--- a/src/noperfctr_macros.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# This file is used by tools/js2c.py to preprocess out the performance counters
-# symbols in builds that don't support counters. This is not used in builds
-# that support performance counters.
-macro COUNTER_NET_SERVER_CONNECTION(x) = ;
-macro COUNTER_NET_SERVER_CONNECTION_CLOSE(x) = ;
-macro COUNTER_HTTP_SERVER_REQUEST(x) = ;
-macro COUNTER_HTTP_SERVER_RESPONSE(x) = ;
-macro COUNTER_HTTP_CLIENT_REQUEST(x) = ;
-macro COUNTER_HTTP_CLIENT_RESPONSE(x) = ;
diff --git a/src/res/node_perfctr_provider.man b/src/res/node_perfctr_provider.man
deleted file mode 100644
index 2f77e332f7..0000000000
--- a/src/res/node_perfctr_provider.man
+++ /dev/null
@@ -1,107 +0,0 @@
-<instrumentationManifest
- xmlns="http://schemas.microsoft.com/win/2004/08/events"
- xmlns:win="http://manifests.microsoft.com/win/2004/08/windows/events"
- xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <instrumentation>
- <counters xmlns="http://schemas.microsoft.com/win/2005/12/counters"
- schemaVersion="1.1">
- <provider symbol="NodeCounterProvider"
- applicationIdentity="node.exe"
- providerType="userMode"
- providerGuid="{793C9B44-3D6B-4F57-B5D7-4FF80ADCF9A2}">
- <counterSet symbol="NodeCounterSet"
- guid="{3A22A8EC-297C-48AC-AB15-33EC93033FD8}"
- uri="Microsoft.Windows.System.PerfCounters.NodeCounterSet"
- name="Node.js"
- description="Node.js performance counters"
- instances="multipleAggregate">
-
- <counter id="1"
- uri="Microsoft.Windows.System.PerfCounters.NodeCounterSet.httpsrvreq"
- name="HTTP server requests"
- description="Number of HTTP server requests"
- type="perf_counter_counter"
- detailLevel="standard"
- aggregate="sum" />
-
- <counter id="2"
- uri="Microsoft.Windows.System.PerfCounters.NodeCounterSet.httpsrvrsp"
- name="HTTP server responses"
- description="Number of HTTP server responses"
- type="perf_counter_counter"
- detailLevel="standard"
- aggregate="sum" />
-
- <counter id="3"
- uri="Microsoft.Windows.System.PerfCounters.NodeCounterSet.httpclireq"
- name="HTTP client requests"
- description="Number of HTTP client requests"
- type="perf_counter_counter"
- detailLevel="standard"
- aggregate="sum" />
-
- <counter id="4"
- uri="Microsoft.Windows.System.PerfCounters.NodeCounterSet.httpclirsp"
- name="HTTP client responses"
- description="Number of HTTP client responses"
- type="perf_counter_counter"
- detailLevel="standard"
- aggregate="sum" />
-
- <counter id="5"
- uri="Microsoft.Windows.System.PerfCounters.NodeCounterSet.netsrvconn"
- name="Active server connections"
- description="Number of server connections"
- type="perf_counter_rawcount"
- detailLevel="standard"
- aggregate="sum" />
-
- <counter id="6"
- uri="Microsoft.Windows.System.PerfCounters.NodeCounterSet.netbytesent"
- name="Network bytes sent"
- description="Number of bytes sent using TCP"
- type="perf_counter_bulk_count"
- detailLevel="standard"
- defaultScale="-3"
- aggregate="sum" />
-
- <counter id="7"
- uri="Microsoft.Windows.System.PerfCounters.NodeCounterSet.netbyterecv"
- name="Network bytes received"
- description="Number of bytes received using TCP"
- type="perf_counter_bulk_count"
- detailLevel="standard"
- defaultScale="-3"
- aggregate="sum" />
-
- <counter id="8"
- uri="Microsoft.Windows.System.PerfCounters.NodeCounterSet.gctime"
- name="%Time in GC"
- description="Percent of time for last GC"
- type="perf_counter_rawcount"
- detailLevel="standard"
- aggregate="avg" />
-
- <counter id="9"
- uri="Microsoft.Windows.System.PerfCounters.NodeCounterSet.pipebytesent"
- name="Pipe bytes sent"
- description="Number of bytes sent using pipe"
- type="perf_counter_bulk_count"
- detailLevel="standard"
- defaultScale="-3"
- aggregate="sum" />
-
- <counter id="10"
- uri="Microsoft.Windows.System.PerfCounters.NodeCounterSet.pipebyterecv"
- name="Pipe bytes received"
- description="Number of bytes received using pipe"
- type="perf_counter_bulk_count"
- detailLevel="standard"
- defaultScale="-3"
- aggregate="sum" />
-
- </counterSet>
- </provider>
- </counters>
- </instrumentation>
-</instrumentationManifest>
diff --git a/src/stream_wrap.cc b/src/stream_wrap.cc
index 59f7eb9503..350aae335a 100644
--- a/src/stream_wrap.cc
+++ b/src/stream_wrap.cc
@@ -25,7 +25,6 @@
#include "env-inl.h"
#include "handle_wrap.h"
#include "node_buffer.h"
-#include "node_counters.h"
#include "pipe_wrap.h"
#include "req_wrap-inl.h"
#include "tcp_wrap.h"
@@ -206,12 +205,6 @@ void LibuvStreamWrap::OnUvRead(ssize_t nread, const uv_buf_t* buf) {
CHECK_EQ(persistent().IsEmpty(), false);
if (nread > 0) {
- if (is_tcp()) {
- NODE_COUNT_NET_BYTES_RECV(nread);
- } else if (is_named_pipe()) {
- NODE_COUNT_PIPE_BYTES_RECV(nread);
- }
-
Local<Object> pending_obj;
if (type == UV_TCP) {
@@ -351,11 +344,6 @@ int LibuvStreamWrap::DoWrite(WriteWrap* req_wrap,
size_t bytes = 0;
for (size_t i = 0; i < count; i++)
bytes += bufs[i].len;
- if (stream()->type == UV_TCP) {
- NODE_COUNT_NET_BYTES_SENT(bytes);
- } else if (stream()->type == UV_NAMED_PIPE) {
- NODE_COUNT_PIPE_BYTES_SENT(bytes);
- }
}
return r;
diff --git a/src/tls_wrap.cc b/src/tls_wrap.cc
index c2efc0c0b8..7ff8b068eb 100644
--- a/src/tls_wrap.cc
+++ b/src/tls_wrap.cc
@@ -26,7 +26,6 @@
#include "node_crypto_bio.h" // NodeBIO
// ClientHelloParser
#include "node_crypto_clienthello-inl.h"
-#include "node_counters.h"
#include "node_internals.h"
#include "stream_base-inl.h"
#include "util-inl.h"
@@ -283,8 +282,6 @@ void TLSWrap::EncOut() {
return;
}
- NODE_COUNT_NET_BYTES_SENT(write_size_);
-
if (!res.async) {
HandleScope handle_scope(env()->isolate());
diff --git a/tools/msvs/msi/i18n/de-de.wxl b/tools/msvs/msi/i18n/de-de.wxl
index 432d1eeaac..9983168a01 100644
--- a/tools/msvs/msi/i18n/de-de.wxl
+++ b/tools/msvs/msi/i18n/de-de.wxl
@@ -12,9 +12,6 @@
<String Id="NodeRuntime_Title">Node.js-Laufzeitumgebung</String>
<String Id="NodeRuntime_Description">Installation der [ProductName]-Laufzeitumgebung (node.exe).</String>
- <String Id="NodePerfCtrSupport_Title">Performance Counter</String>
- <String Id="NodePerfCtrSupport_Description">Installiert Unterstützung für [ProductName]-spezifische Performance Counter.</String>
-
<String Id="NodeEtwSupport_Title">Event Tracing (ETW)</String>
<String Id="NodeEtwSupport_Description">Installiert Unterstützung für Event Tracing (ETW)-Events, generiert von [ProductName].</String>
diff --git a/tools/msvs/msi/i18n/en-us.wxl b/tools/msvs/msi/i18n/en-us.wxl
index 71c1701491..e69ea7bbec 100644
--- a/tools/msvs/msi/i18n/en-us.wxl
+++ b/tools/msvs/msi/i18n/en-us.wxl
@@ -20,9 +20,6 @@
<String Id="NodeRuntime_Title">Node.js runtime</String>
<String Id="NodeRuntime_Description">Install the core [ProductName] runtime (node.exe).</String>
- <String Id="NodePerfCtrSupport_Title">Performance counters</String>
- <String Id="NodePerfCtrSupport_Description">Installs support for [ProductName]-specific performance counters.</String>
-
<String Id="NodeEtwSupport_Title">Event tracing (ETW)</String>
<String Id="NodeEtwSupport_Description">Installs support for event tracing (ETW) events generated by [ProductName].</String>
diff --git a/tools/msvs/msi/i18n/it-it.wxl b/tools/msvs/msi/i18n/it-it.wxl
index 54a251ea25..e3a5a5dcba 100644
--- a/tools/msvs/msi/i18n/it-it.wxl
+++ b/tools/msvs/msi/i18n/it-it.wxl
@@ -12,9 +12,6 @@
<String Id="NodeRuntime_Title">Node.js runtime</String>
<String Id="NodeRuntime_Description">Installa [ProductName] runtime (node.exe).</String>
- <String Id="NodePerfCtrSupport_Title">Performance counters</String>
- <String Id="NodePerfCtrSupport_Description">Installa il supporto per i performance counters specifici di [ProductName].</String>
-
<String Id="NodeEtwSupport_Title">Event tracing (ETW)</String>
<String Id="NodeEtwSupport_Description">Installa il supporto per gli eventi "event tracing" (ETW) generati da [ProductName].</String>
diff --git a/tools/msvs/msi/i18n/zh-cn.wxl b/tools/msvs/msi/i18n/zh-cn.wxl
index 605eea7092..e351436d05 100644
--- a/tools/msvs/msi/i18n/zh-cn.wxl
+++ b/tools/msvs/msi/i18n/zh-cn.wxl
@@ -12,9 +12,6 @@
<String Id="NodeRuntime_Title">Node.js 运行时</String>
<String Id="NodeRuntime_Description">安装核心 [ProductName] 运行时(node.exe)。</String>
- <String Id="NodePerfCtrSupport_Title">性能计数器</String>
- <String Id="NodePerfCtrSupport_Description">为 [ProductName] 安装特定的性能计数器支持。</String>
-
<String Id="NodeEtwSupport_Title">事件追踪(ETW)</String>
<String Id="NodeEtwSupport_Description">为 [ProductName] 生成的事件安装事件追踪(ETW)的支持。</String>
diff --git a/tools/msvs/msi/nodemsi.wixproj b/tools/msvs/msi/nodemsi.wixproj
index 892f19040a..6c23c1650b 100644
--- a/tools/msvs/msi/nodemsi.wixproj
+++ b/tools/msvs/msi/nodemsi.wixproj
@@ -16,23 +16,23 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>..\..\..\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
- <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFilesFolder</DefineConstants>
+ <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFilesFolder</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>..\..\..\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
- <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFilesFolder</DefineConstants>
+ <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFilesFolder</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<OutputPath>..\..\..\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
- <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFiles64Folder</DefineConstants>
+ <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFiles64Folder</DefineConstants>
<Cultures>en-US</Cultures>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<OutputPath>..\..\..\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
- <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFiles64Folder</DefineConstants>
+ <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFiles64Folder</DefineConstants>
</PropertyGroup>
<PropertyGroup>
<EnableProjectHarvesting>True</EnableProjectHarvesting>
diff --git a/tools/msvs/msi/product.wxs b/tools/msvs/msi/product.wxs
index ad48fedafd..b21e86fc7c 100755
--- a/tools/msvs/msi/product.wxs
+++ b/tools/msvs/msi/product.wxs
@@ -76,13 +76,6 @@
<ComponentRef Id="InstallToolsTxt" />
<ComponentGroupRef Id="Product.Generated"/>
- <Feature Id="NodePerfCtrSupport"
- Level="1"
- Title="!(loc.NodePerfCtrSupport_Title)"
- Description="!(loc.NodePerfCtrSupport_Description)">
- <ComponentRef Id="NodePerfCtrSupport"/>
- </Feature>
-
<Feature Id="NodeEtwSupport"
Level="1"
Title="!(loc.NodeEtwSupport_Title)"
@@ -172,14 +165,6 @@
<File Id="InstallToolsTxt" Source="$(var.RepoDir)\tools\msvs\install_tools\install_tools.txt"/>
</Component>
- <?if $(var.NoPerfCtr) != 1 ?>
- <Component Id="NodePerfCtrSupport">
- <File Id="node_perfctr_provider_man" Name="node_perfctr_provider.man" Source="$(var.RepoDir)\src\res\node_perfctr_provider.man">
- <util:PerfCounterManifest ResourceFileDirectory="[INSTALLDIR]"/>
- </File>
- </Component>
- <?endif?>
-
<?if $(var.NoETW) != 1 ?>
<Component Id="NodeEtwSupport">
<File Id="node_etw_provider.man" Source="$(var.RepoDir)\src\res\node_etw_provider.man">
diff --git a/vcbuild.bat b/vcbuild.bat
index 0c7bd0f48b..81c2b2c380 100644
--- a/vcbuild.bat
+++ b/vcbuild.bat
@@ -35,8 +35,6 @@ set lint_md=
set lint_md_build=
set noetw=
set noetw_msi_arg=
-set noperfctr=
-set noperfctr_msi_arg=
set i18n_arg=
set download_arg=
set build_release=
@@ -75,7 +73,6 @@ if /i "%1"=="nosign" set "sign="&echo Note: vcbuild no longer signs by de
if /i "%1"=="sign" set sign=1&goto arg-ok
if /i "%1"=="nosnapshot" set nosnapshot=1&goto arg-ok
if /i "%1"=="noetw" set noetw=1&goto arg-ok
-if /i "%1"=="noperfctr" set noperfctr=1&goto arg-ok
if /i "%1"=="ltcg" set ltcg=1&goto arg-ok
if /i "%1"=="nopch" set "pch="&goto arg-ok
if /i "%1"=="licensertf" set licensertf=1&goto arg-ok
@@ -165,7 +162,6 @@ if "%target_env%"=="vs2017" set "node_gyp_exe=%node_gyp_exe% --msvs_version=2017
if "%config%"=="Debug" set configure_flags=%configure_flags% --debug
if defined nosnapshot set configure_flags=%configure_flags% --without-snapshot
if defined noetw set configure_flags=%configure_flags% --without-etw& set noetw_msi_arg=/p:NoETW=1
-if defined noperfctr set configure_flags=%configure_flags% --without-perfctr& set noperfctr_msi_arg=/p:NoPerfCtr=1
if defined ltcg set configure_flags=%configure_flags% --with-ltcg
if defined pch set configure_flags=%configure_flags% --with-pch
if defined release_urlbase set configure_flags=%configure_flags% --release-urlbase=%release_urlbase%
@@ -352,10 +348,6 @@ if not defined noetw (
copy /Y ..\src\res\node_etw_provider.man node-v%FULLVERSION%-win-%target_arch%\ > nul
if errorlevel 1 echo Cannot copy node_etw_provider.man && goto package_error
)
-if not defined noperfctr (
- copy /Y ..\src\res\node_perfctr_provider.man node-v%FULLVERSION%-win-%target_arch%\ > nul
- if errorlevel 1 echo Cannot copy node_perfctr_provider.man && goto package_error
-)
echo Creating node-v%FULLVERSION%-win-%target_arch%.7z
del node-v%FULLVERSION%-win-%target_arch%.7z > nul 2> nul
@@ -391,7 +383,7 @@ if not defined msi goto install-doctools
echo Building node-v%FULLVERSION%-%target_arch%.msi
set "msbsdk="
if defined WindowsSDKVersion set "msbsdk=/p:WindowsTargetPlatformVersion=%WindowsSDKVersion:~0,-1%"
-msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build %msbsdk% /p:PlatformToolset=%PLATFORM_TOOLSET% /p:GypMsvsVersion=%GYP_MSVS_VERSION% /p:Configuration=%config% /p:Platform=%target_arch% /p:NodeVersion=%NODE_VERSION% /p:FullVersion=%FULLVERSION% /p:DistTypeDir=%DISTTYPEDIR% %noetw_msi_arg% %noperfctr_msi_arg% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo
+msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build %msbsdk% /p:PlatformToolset=%PLATFORM_TOOLSET% /p:GypMsvsVersion=%GYP_MSVS_VERSION% /p:Configuration=%config% /p:Platform=%target_arch% /p:NodeVersion=%NODE_VERSION% /p:FullVersion=%FULLVERSION% /p:DistTypeDir=%DISTTYPEDIR% %noetw_msi_arg% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo
if errorlevel 1 goto exit
if not defined sign goto upload
@@ -631,7 +623,7 @@ del .used_configure_flags
goto exit
:help
-echo vcbuild.bat [debug/release] [msi] [doc] [test/test-ci/test-all/test-addons/test-addons-napi/test-internet/test-pummel/test-simple/test-message/test-tick-processor/test-known-issues/test-node-inspect/test-check-deopts/test-npm/test-async-hooks/test-v8/test-v8-intl/test-v8-benchmarks/test-v8-all] [ignore-flaky] [static/dll] [noprojgen] [projgen] [small-icu/full-icu/without-intl] [nobuild] [nosnapshot] [noetw] [noperfctr] [ltcg] [nopch] [licensetf] [sign] [ia32/x86/x64] [vs2017] [download-all] [enable-vtune] [lint/lint-ci/lint-js/lint-js-ci/lint-md] [lint-md-build] [package] [build-release] [upload] [no-NODE-OPTIONS] [link-module path-to-module] [debug-http2] [debug-nghttp2] [clean] [no-cctest] [openssl-no-asm]
+echo vcbuild.bat [debug/release] [msi] [doc] [test/test-ci/test-all/test-addons/test-addons-napi/test-internet/test-pummel/test-simple/test-message/test-tick-processor/test-known-issues/test-node-inspect/test-check-deopts/test-npm/test-async-hooks/test-v8/test-v8-intl/test-v8-benchmarks/test-v8-all] [ignore-flaky] [static/dll] [noprojgen] [projgen] [small-icu/full-icu/without-intl] [nobuild] [nosnapshot] [noetw] [ltcg] [nopch] [licensetf] [sign] [ia32/x86/x64] [vs2017] [download-all] [enable-vtune] [lint/lint-ci/lint-js/lint-js-ci/lint-md] [lint-md-build] [package] [build-release] [upload] [no-NODE-OPTIONS] [link-module path-to-module] [debug-http2] [debug-nghttp2] [clean] [no-cctest] [openssl-no-asm]
echo Examples:
echo vcbuild.bat : builds release build
echo vcbuild.bat debug : builds debug build